NodeJS express-session req.session未定义 [英] NodeJS express-session req.session is undefined

查看:974
本文介绍了NodeJS express-session req.session未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个简单的登录系统上工作,但似乎没有保存会话

I am working on a simple login system, but it seems like the session is not saved

我已经做了一个简单的代码进行测试,任何人都可以告诉我什么是错的吗?
i我正在运行登录,之后我正在运行is_logged但我从来没有记录,两个会话都是未定义的。

i have made a simple code for testing, can anyone tell me what is wrong with it ? i am running login and after that i am running the is_logged but i am never logged and both sessions are undefined

var port = process.env.PORT || 8080;
var express = require('express');
var app = express();


var cookieParser = require('cookie-parser');
var session = require('express-session');



app.use(cookieParser());
app.use(session({
    secret: "fd34s@!@dfa453f3DF#$D&W", 
    resave: false, 
    saveUninitialized: true, 
    cookie: { secure: true }
}));



 app.post('/test_login', function(req, res){

    req.session.users_schema = 1;
    req.session.user_doc = 2;

    res.json({"first": req.session.users_schema, "second": req.session.user_doc});
});
 app.post('/test_is_loggin', function(req, res){

    if( !req.session.users_schema || !req.session.user_doc ) { 

        console.log("no");
        res.json({"first": 1, "second": 1});
    }
    else {

        console.log("no2");
        res.json({"first": req.session.users_schema, "second": req.session.user_doc});
    }

 });


app.listen(port);
console.log('Listening on port ' + port);


推荐答案

这是因为 cookie.secure = true

报价


请注意,secure:true是推荐的选项。然而,它
需要启用https的网站,即HTTPS是安全的
cookie所必需的。

Please note that secure: true is a recommended option. However, it requires an https-enabled website, i.e., HTTPS is necessary for secure cookies.

请参阅 https://github.com/expressjs/session#cookie-options

您必须将其设置为false,以允许非https主机上的会话cookie或使用https主机。

You must set it to false, to allow session cookies on non-https host, or use an https host.

测试代码

var port = process.env.PORT || 8080;
var express = require('express');
var app = express();


var cookieParser = require('cookie-parser');
var session = require('express-session');



app.use(cookieParser());
app.use(session({
    secret: "fd34s@!@dfa453f3DF#$D&W",
    resave: false,
    saveUninitialized: true,
    cookie: { secure: !true }
}));



 app.get('/test_login', function(req, res){

    req.session.users_schema = 1;
    req.session.user_doc = 2;

    res.json({"first": req.session.users_schema, "second": req.session.user_doc});
});
app.get('/test_is_loggin', function(req, res){

  if( !req.session.users_schema || !req.session.user_doc ) {

      console.log("no");
      res.json({"first": 1, "second": 1});
  }
  else {

      console.log("OK");
      res.json({"first": req.session.users_schema, "second": req.session.user_doc});
  }

});


app.listen(port);
console.log('Listening on port ' + port);

输出

[mh-cbon@pc15 test] $ node express-session.js 
Listening on port 8080
OK

这篇关于NodeJS express-session req.session未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆