代码之家  ›  专栏  ›  技术社区  ›  Mahdi

使用axios时如何保存express会话?

  •  0
  • Mahdi  · 技术社区  · 6 年前

    当我在页面中设置会话并重定向到web应用程序的另一个页面时,我正在使用Express作为React应用程序的后端

    async function createUser(req, res, next) {
      try {
        let parameters = req.body
        let user = await models.User.create({
          displayName: parameters.displayName,
          phone: parameters.phone,
          sex: parameters.sex,
          password: parameters.password,
      })
      req.session.user = user.dataValues;
      res.json({
        status: 'success',
        user,
      })
    }
    

    下面是我的代码:

    onSubmit = (event) => {
      event.preventDefault()
      request.post('/newuser',{
        displayName:this.state.name,
        phone:this.state.phone,
        password:this.state.password,
        sex:this.state.sex
      })
      .then(function(response){
        this.props.authenticate(true)
        this.setState({
          auth:true
        })
      }.bind(this))
    }
    

    render(){
      if(this.state.auth) 
        return <Redirect to='/profile' />;
    }
    

    有了这些描述,当我重定向到个人资料页面时,我没有任何会话,所有的希望都消失了:))

    请帮我解决这个问题。

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Mahdi    6 年前

    使用axios发送请求时,应执行以下操作:

    在axios设置中,应设置为with credentials:true,如下所示:

    import axios from 'axios'
    import config from '../../config'
    
    const request = axios.create({
      baseURL: config.url,
      timeout: 20000,
      withCredentials: true,
    });
    
    export default request
    

    const express = require('express')
    const cors = require('cors')
    
    app.use(cors({
      origin:['http://localhost:9520']//your front url,
      methods:['GET','POST'],
      credentials: true
    }))
    

    我通过搜索找到了答案,不过谢谢你没有帮忙:))