Express Session是否不能跨路由持久化?

时间:2018-08-06 20:22:15

标签: javascript node.js express cookies express-session

我正在尝试将用户ID变量保存到cookie以在OAuth2流中使用,但是在从其他路由访问该cookie值时遇到一些问题。这是我的代码:

在我的app.js中:

var router = require("./routes/index");

app.use(session({
    resave: true,
    saveUninitialized: true,
    secret: "secret key",
    cookie: {
        maxAge: 60000
    }
}));

app.use(router, session);

在我的router.js中,所有路由都在其中,其中有一个'/ auth'路由,我在其中设置如下cookie:

req.session.sender_id = 'my cookie value';

现在,在router.js文件中,我尝试通过/callback路由访问相同的cookie,如下所示:

console.log("cookie session: " + req.session.sender_id);

但是我总是得到undefined的cookie。我想念什么?

感谢您的帮助!

编辑:

添加更多我的路由器代码。这是我设置cookie的/ auth路由:

router.post("/action", function(req, res) {

    var action = req.body.queryResult.parameters.action;

    //-----AUTHENTICATION
    if (action == "auth") {
        res.set({
            'Content-Type': 'application/json'
        });

        //set the user id cookie
        req.session.sender_id = req.body.originalDetectIntentRequest.payload.data.sender.id;
        console.log("cookie session: " + req.session.id);
        console.log("cookie session: " + req.session.sender_id);

        authenticate(req.body).then(function(result) {
            console.log(result);
            res.send(result);
        });

    ...

基本上被调用的authenticate函数只是将用户添加到mongo db中,或者如果已经存在则进行更新-它不与会话交互。这是我尝试读取会话的/ callback路由:

router.get('/callback', function(req, res) {

    console.log("cookie session: " + req.session.id);
    console.log("sender_id: " + JSON.stringify(req.session));

...

0 个答案:

没有答案