在Postman上跟踪会话,但没有React

时间:2018-08-14 00:02:56

标签: reactjs express session

我有一个正在运行的Express.js应用程序和一个React.js应用程序。在Express.js方面,我正在使用Redis会话来跟踪是否有人登录。当我发出另一个POST请求时,我正在检查用户是否在服务器端登录,然后再对该请求执行任何操作。当我在Postman中对此进行模拟时,它会按预期工作。我发送使用哈希密码和用户名登录的请求,然后继续将请求发送到另一个POST请求,跟踪会话并让请求处理。

React.js端不是这种情况。当我对提取请求执行相同操作时,它不会跟踪会话,即使登录后也表示用户未根据会话登录。我尝试添加cookie以通过app.js做出反应。

import 'semantic-ui-css/semantic.min.css';
import React from 'react';
import ReactDOM from 'react-dom';
import { CookiesProvider } from 'react-cookie';
import { App } from './components/App';


ReactDOM.render(
  <CookiesProvider>
    <App />
  </CookiesProvider>,
  document.getElementById('root'),
);

服务器端配置:app.js

let express = require('express');
let path = require('path');
let favicon = require('serve-favicon');
let cookieParser = require('cookie-parser');
let bodyParser = require('body-parser');
let session = require('express-session');
let RedisStore = require('connect-redis')(session);
let cors = require('cors');

let userController = require('./routes/userController');
let requestController = require('./routes/requestController');
let Logger = require('./modules/Log.js');
let config = require('./config.json');

let app = express();
let logger = new Logger();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

process.env.DEBUG = true;

let redisStore = new RedisStore(config.redis.store_data);
let sessionData = config.redis.redis_argument;
sessionData.store = redisStore;
app.use(cookieParser('SEKR37'));
app.use(session (sessionData));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());
app.use((error, request, response, next) => {
    response.locals.message = error.message;
    response.locals.error = request.app.get('env') === 'development' ? error : {};
    response.status(error.status || 500);
    request.universalCookies
    if(error) {
        logger.log(error);
    }
    response.render('error');
});

有人知道我应该如何使用react.js跟踪服务器端会话吗?

0 个答案:

没有答案