注销和重新登录时会话变量设置不一致

编程入门 行业动态 更新时间:2024-10-04 23:31:43

注销和重新登录<a href=https://www.elefans.com/category/jswz/34/1771345.html style=时会话变量设置不一致"/>

注销和重新登录时会话变量设置不一致

我的会话变量设置不一致有问题。这是我的会议声明。

app.use(
    session({
        secret: process.env.MYSTERY,
        resave: false,
        saveUninitialized: false,
        store: store,
        cookie: {
            maxAge : 86400000, // expires in 1 day (in milliseconds)
            httpOnly : true,
            sameSite : "strict"
        }
    })
)

然后,当用户成功登录时,我将“isAuth”和“用户名”存储到会话中。以下是我登录的帖子路线。

exports.loginCustomer = async (req, res) => {
    try {
        await check('username')
            .custom(async (value) => {
            const customer = await Customer.findOne({ username : value })
            if (!customer) {
                throw new Error('The username or password you entered does not match any account')
            }
            const password = req.body.password;
            const isMatch = await bcryptpare(password, customer.password);
            if (!isMatch) {
                throw new Error('The username or password you entered does not match any account');
            }
            return true
            })
            .run(req)
        
        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            const alert = errors.array();
            return res.render('./customer/login', { alert, session: req.session });
        }
        const username = req.body.username
        const customer = await Customer.findOne({username})
        req.session.isAuth = true
        req.session.username = username
        req.session.isAdmin = customer.admin
        return res.redirect('/')
    } catch (error) {
        console.log(error);
    }
}

以防万一下面是我的注销路线。

exports.logoutCustomer =  async (req, res) => {
    req.session.destroy((err) => {
        if (err) {
            throw err
        } else {
            console.log("LOGOUT")
            res.redirect('../')
        }
    })
}

问题是当用户在注销后成功重新登录时,session.isAuth 和 session.username 的设置不一致。我已经测试了很多次登录注销然后重新登录,发现有时这些值设置正确,有时却没有。但是,我注意到在用户成功登录但无法呈现这两个值后,如果我刷新页面,我可以呈现这些值。

感谢您的任何意见、想法和建议。

我尝试更改代码行的顺序并检查是否通过呈现这两个值(使用 ejs)设置了 session.isAuth 和 session.username。然而,我发现它们并没有得到一致的渲染。

回答如下:

更多推荐

注销和重新登录时会话变量设置不一致

本文发布于:2024-05-30 23:06:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771022.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时会   变量

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!