首页 > 解决方案 > 登录后从用户会话中删除密码

问题描述

当用户登录时,我创建一个用户对象并将其存储在会话变量中(我使用的是 express-session)。然而,它也在会话中存储散列密码,但我宁愿不这样做。有没有办法从会话中删除密码,或者我必须为我想存储在会话中的所有内容创建一个单独的会话变量?例如:

User.findOne({email: email})
.then(user => {
    if (!user) {
        return res.status(422).render('auth/login', {
            path: '/login', 
            pageTitle: 'Login', 
            errorMessage: 'Invalid login details', 
            email: email
        });
    }
    bcrypt.compare(password, user.password)
    .then(doMatch => {
        if (doMatch) {
            req.session.isLoggedIn = true;
             req.session.user = user
             return req.session.save((err) => {
                res.redirect('/dashboard');
            }); 
        }

因此,而不是 req.session.user = user 也许我必须这样做:

req.session.user.email = user.email
req.session.user.firstName = user.firstName

等等。我确实尝试过,但密码仍然保留在会话中:

req.session.user = { ...user }
delete req.session.user.password

标签: node.jsexpressexpress-session

解决方案


推荐阅读