在快递会议中的要求并不持久

Rob*_*ohr 10 node.js express express-session

我有以下代码:

var express = require('express');
var cookieParser = require('cookie-parser');
var http = require('http')
var app = express();
app.use(cookieParser());
var session = require('express-session');
app.use(session({
    resave: false,
    saveUninitialized: true,
    secret: 'sdlfjljrowuroweu',
    cookie: { secure: true }
}));

app.get('/test', test);
function test(req, res) {
    var sess = req.session;
    console.log('before', sess);
    if (sess.views) {
        sess.views++
        req.session.save();
        res.setHeader('Content-Type', 'text/html')
        res.write('<p>views: ' + sess.views + '</p>')
        res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>')
        res.end();
    } else {
        sess.views = 1;
        req.session.save();
        res.end('welcome to the session demo. refresh!')
    }
    console.log('after', sess);
    return;
}

var server = http.createServer(app);
server.listen(8181);
Run Code Online (Sandbox Code Playgroud)

并重新加载页面,我只是继续获取​​视图计数0消息.

检查控制台,这是每次输出:

before { cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true,
     secure: true } }
after { cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true,
     secure: true },
  views: 1 }
Run Code Online (Sandbox Code Playgroud)

所以它似乎根本没有储蓄

dor*_*guy 26

更改 cookie: { secure: true }cookie: { secure: false }

使用安全标志意味着cookie将仅在Https上设置.

  • 这确实是问题所在,但是可以实现 `cookie: { secure: app.get('env') === 'production' }` 以便仅在应用程序上线时才需要 SSL。 (4认同)
  • 感谢您将我的评论复制到答案中。 (2认同)
  • 我没有看到你的评论 (2认同)