使用axios时如何保存快速会话?

时间:2018-10-05 08:52:19

标签: javascript reactjs express react-router

当我在页面中设置会话并重定向到该会话已删除的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))
}

这是我的react render方法:

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

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

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:-1)

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

在前面(反应): 您应该在axios设置中设置withCredentials:true:

import axios from 'axios'
import config from '../../config'

const request = axios.create({
  baseURL: config.url,
  timeout: 20000,
  withCredentials: true,
});

export default request

在Back(节点/ Express)中,:您应该将此代码添加到cors

const express = require('express')
const cors = require('cors')

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

我通过搜索发现了问题,但感谢您的帮助:))