尝试使用 express-session 创建登录会话,它不起作用,但我没有收到错误

问题描述

我使用边缘模板制作了登录注册页面,并对其进行了设置,以便在有人登录时创建到我的 MongoDB 的会话。会话正在显示,如果我使用同一用户登录两次,则不会进行第二次相同的会话。但是,它应该不再显示登录”和“注册”按钮,而是显示“注销”按钮。

此外,当有人登录时,它应该允许他们创建帖子(博客),但单击该按钮时它会将我重定向到主页,就好像我根本没有登录一样。

这是我的登录控制器:

const bcrypt = require('bcrypt')
const User = require('../database/models/user')

module.exports = (req,res) => {
    const {
        email,password
    } = req.body;
    // try to find the user
    User.findOne({
        email
    },(error,user) => {
        if (user) {
            // compare passwords.
            bcrypt.compare(password,user.password,same) => {
                if (same) {
                  req.session.userID = user._id
                    res.redirect('/')
                } else {
                    res.redirect('/auth/login')
                }
            })
        } else {
            return res.redirect('/auth/login')
        }
    })
}

如果电子邮件和密码相同,则重定向回主页,这是当前行为。

这是在我的数据库中创建的会话: MongoDB session

这是我创建的身份验证中间件:

const User = require('../database/models/user')

module.exports = (req,res,next) => {
    User.findById(req.session.userId,user) => {
        if (error || !user) {
            return res.redirect('/auth/login')
        }

        next()
    })
}

在这些方面做错了什么吗?感谢所有花时间阅读本文的人,如果我需要包含更多信息,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)