【问题标题】:express sessions do not work - new session upon every request快速会话不起作用 - 每次请求都需要新会话
【发布时间】:2016-07-16 14:20:59
【问题描述】:

我使用 express-session 设置会话管理的方式如下:

var express = require('express');
var session = require('express-session');
var app = express();
var mongoose = require('mongoose');
var MongoStore = require('connect-mongo')(session);

mongoose.connect('mongodb://localhost/sessionTest');


app.listen(3000, function () {
});

app.use(session({
    secret: 'justsomestuff',
    resave: false,
    saveUninitialized: false,
    cookie: {  } ,
    store: new MongoStore({mongooseConnection: mongoose.connection})
}));

app.get('/first', function (req, res) {
    console.log('first');
    req.session.test = 'Tester';
    req.session.save();
    console.log(req.sessionID);
    res.send(req.sessionID);
}); 

app.get('/second', function (req, res) {
    console.log('second');
    if (req.session)
            console.log('session exists');
    console.log(req.sessionID);
    console.log(req.session.test);
    res.send(req.sessionID);
});

但是每次我调用 /first 或 /second 时都会使用新会话 id 建立一个新会话

curl 127.0.0.1:3000/first
curl 127.0.0.1:3000/second

我用

"connect-mongo": "^1.2.1",
"express": "~4.13.4",
"express-session": "^1.14.0",

所有会话也都在 mongo 数据库中。

这似乎是一个直截了当的问题,但我根本无法弄清楚。

【问题讨论】:

  • 看起来您实际上并没有在您的 curl 调用中发回会话 cookie。

标签: session express express-session


【解决方案1】:

您正在使用 curl。并且 curl 不隐式支持 cookie。您必须传递 cookie 值 explicitly via command。并在服务器尝试设置等时读取 cookie。

为什么不使用浏览器进行测试。

或者如果你仍然想要 curl 然后像这样使用 -b 和 -c 参数。

curl -b cookies.txt -c cookies.txt 

-b 告诉 curl 将传入的 cookie 存储在 cookies.txt 中,-c 告诉 curl 将 cookies.txt 中的所有 cookie 嵌入到此请求中。

此外,通过添加过期字段来延长 cookie 的寿命。

 app.use(session({
    secret: 'justsomestuff',
    resave: false,
    saveUninitialized: false,
    expires: new Date(Date.now() + (60 * 60 * 24 * 7 * 1000)),
    cookie: {  } ,
    store: new MongoStore({mongooseConnection: mongoose.connection})
 }));

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 2021-05-30
    • 2015-06-10
    • 2023-03-12
    • 1970-01-01
    • 2019-10-13
    • 2021-03-25
    • 2018-02-12
    相关资源
    最近更新 更多