Пытаюсь создать сеансы входа в систему с помощью экспресс-сеанса, это не работает, но я не получаю ошибок

#javascript #mongodb #express-session #edge.js

Вопрос:

Я создал страницу входа и регистрации, используя шаблоны edge, и настроил ее так, чтобы, когда кто-то входит в систему, она создавала сеанс для моего 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, (error, same) => {
                if (same) {
                  req.session.userID = user._id
                    res.redirect('/')
                } else {
                    res.redirect('/auth/login')
                }
            })
        } else {
            return res.redirect('/auth/login')
        }
    })
}
 

Если адрес электронной почты и пароль совпадают, он перенаправляется обратно на домашнюю страницу, что соответствует текущему поведению.

Вот сеанс, который создается в моей базе данных: сеанс MongoDB

Это промежуточное программное обеспечение для аутентификации, которое я создал:

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

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

        next()
    })
}
 

Есть ли что-то, что я делаю не так в этом? Спасибо всем, кто найдет время прочитать это, дайте мне знать, если мне понадобится дополнительная информация.