【问题标题】:session expires not in the expected time in node.js会话未在 node.js 中的预期时间到期
【发布时间】:2018-09-10 17:04:06
【问题描述】:

我对@9​​87654321@ 和Express-session 还是很陌生。我创建了一个登录/注册系统,每当用户登录时重定向到一个名为scoreboard 的页面。

问题:会话很快就会过期,而不是我设置的值。不知道怎么解决?

server.js

var session = require('express-session');
app.use(session({
    secret: "ILoveMostafa",
    resave: false,
    saveUninitialized: false,
    cookie: {
    expires: new Date(Date.now() + 43200)
    }
}))

user.js

router.post('/login', (req, res) => {
    var email = req.body.email;
    var password = req.body.password;
    userModel.authenticate(email, password, (err, user) => {
        if (err) {
            console.log(err)
        }
        else if (!user) {
            console.log('Wrong Password')
        }
        else {
            req.session.userId = user._id;
            res.redirect('/user/scoreboard')
        }
    })
});

router.get('/scoreboard',async (req, res) => {
    console.log(req.session.userId)
    if (req.session.userId) {
        const teams = await userModel.find({}).sort('-score')
        const faculties = await userModel.aggregate([{
            "$group": {
                _id: "$faculty",
                average: {
                    $avg: "$score"
                }
            }
        }]).sort("-average")
        res.render('main/scoreboard', {
            teamInformation: teams,
            finalResult: faculties
        })
    }
    else {
        res.redirect('/')
    }
});

刷新页面大约2分钟后,我重定向到登录页面!

【问题讨论】:

    标签: node.js session express-session


    【解决方案1】:

    日期时间以毫秒为单位。

    expires: new Date(Date.now() + 43200) 将过期时间设置为比当前时间晚 43.2 秒。

    【讨论】:

    • 非常感谢,我会很感激给我点赞的人! :)
    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2012-11-25
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2014-10-13
    • 2016-03-13
    • 2016-09-13
    相关资源
    最近更新 更多