首页 > 解决方案 > 在 Express Session 中更改变量

问题描述

我正在使用 express-session 包,我想更改会话中的变量“_id”。这是我的会话初始化

app.use(session({
    secret: "secretshhhhhh",
    resave: true,
    saveUninitialized: false,
}))

在登录页面之后,我尝试使用以下几行存储 id:

req.session._id = user._id.toString()
req.session.save(function (err) {
    req.session.save(function (err) {
         console.log(req.session)
    }) 
})

console.log 使用 id 打印会话,但是当我尝试在其他页面中获取 _id 时,会向我发送一个空对象。这是没有 _id 的打印会话示例

return res.status(200).send(req.session); 

我尝试了很多方法,但这些方法都不适合我。

编辑:这是我将其置于会话中的全部功能

module.exports.login_post = async function (req, res) {
    User.findOne({ email: req.body.email }, function (err, user) {
        if (user == null) {
            return res.status(400).send({
                message: "User not found"
            })
        }
        else {
            if (user.validPassword(req.body.password)) {
                req.session._id = user._id.toString()
                req.session.save(function (saveErr) {
                    req.session.reload(function (reloadSave) {
                        console.log(req.session, saveErr, reloadSave)
                    }) 
                })
            }
        }
    })
}

这是我从会话中获取它的整个功能

module.exports.session_get = function(req, res) {
    return res.status(200).send(req.session); 
}

module.exports.session_destroy = function(req, res) {
    req.session.destroy();
    return res.status(200).send({
        message: "Session detroyed"
    }); 
}

标签: node.jsmongodbexpresssessionexpress-session

解决方案


推荐阅读