【问题标题】:NodeJS - session data not stored after react-buildNodeJS - 反应构建后未存储会话数据
【发布时间】:2018-04-16 10:03:51
【问题描述】:

我设置了一个简单的 NodeJS 网络应用程序, 基本功能是登录,然后应用程序根据会话数据从 MySql 中提取一些数据。 这是有效的 (Link)。

一旦我写了客户端反应,会话数据就不会被存储(因此应用程序不工作) 有任何想法吗? 对启用会话的反应有任何特定的反应要求吗?

注意:在页面重定向(成功)到 menu.html 后做出反应 我期望 req.session 有一个 auth 属性(=true) 但是当我记录会话数据时它是空的。 因此我假设没有存储会话数据。

Login.js

const express = require('express');
const con = require('../config/mysqlCon.js');
const session = require('express-session');
const router = express.Router();

app.use(session({
  secret: 'secret',
  resave: true,
  saveUninitialized: true,
}))

router.post('/',approveUserPassword, function(req, res){

  if(req.session.auth){
    let url = '/menu.html';
    res.redirect(url);

  }else{
    req.session.auth = false;
    let url = '/index.html';
    res.redirect(url);

  }
});


function approveUserPassword(req, res, next) {

  let email = req.body.email;
  let psw = req.body.psw;
  let query = "SELECT id FROM Users " +
              "WHERE email= '" + email + "' AND " +
              "password='" + psw + "'";

  con.query(query, function (err, result, fields) {
    if (err) throw err;

    if(result.length > 0){
      req.session.auth = true;
      req.session.rest_id = result[0].id;
      req.session.save();

    }else{
      req.session.auth = false;
    }

    next();
  });
}

刚刚注意到创建了 2 个会话,不知道为什么。 节点js监听8080端口...

登录

时间:1509727252952 id:j1KIe081XzRhWKKKM7z5Jjv1N6Cderee 会议 { 曲奇饼: { 小路: '/', _expires:空, 原始最大年龄:空, httpOnly: true } }

菜单

时间:1509727252955 id:j1KIe081XzRhWKKKM7z5Jjv1N6Cderee 会议 { 曲奇饼: { 小路: '/', _expires:空, 原始最大年龄:空, httpOnly: 真 } } 会议 { 曲奇饼: { 小路: '/', _expires:空, 原始最大年龄:空, httpOnly: 真 }, 认证:是的, rest_id: 100 }

登录

时间:1509727253124 编号:rqCBY1fnH5WpS9M6Brp6RZokxMWzf0Pk 会议 { 曲奇饼: { 小路: '/', _expires:空, 原始最大年龄:空, httpOnly: true } }

菜单

时间:1509727253124 编号:rqCBY1fnH5WpS9M6Brp6RZokxMWzf0Pk 会议 { 曲奇饼: { 小路: '/', _expires:空, 原始最大年龄:空, httpOnly: 真 } } rqCBY1fnH5WpS9M6Brp6RZokxMWzf0Pk

【问题讨论】:

  • 刚刚注意到创建了2个会话,仍然不知道为什么:

标签: javascript node.js reactjs session


【解决方案1】:

Express router create a new session not wanted

我猜这是创建 ajax 请求时的一些问题:

fetch('/api/myroute', {
    credentials: 'same-origin' // This is the line you are missing 
}).then(response => response.json())
.then(json => {
    dispatch({
        type: types.MY_ACTION, forms: json, receivedAt: Date.now()
    })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多