Так что я долго не мог понять, как управлять сессиями в Express. Да, я везде смотрел на YouTube, Stack Over Flow и т. Д., И это просто не имеет никакого смысла для меня вообще.
Итак, я знаю основы, устанавливаю модуль express-sessions
, затем запрашиваю его, а затем регистрирую промежуточное ПО в нашем приложении. Теперь у нас есть доступ к объекту сеанса через request
объект, выполнив request.session
. Хорошо, но что теперь?
Я думаю, что самая большая проблема, с которой я сталкиваюсь, - это как поддерживать сеанс пользователя. В моем недавнем заявлении у меня есть страница регистрации и входа. Как только пользователь регистрируется, ему предлагается войти в систему. Когда пользователь входит в приложение, на бэкэнде я сначала проверяю, соответствуют ли предоставленные данные базе данных, если это так, тогда я ссылаюсь на объект request.session
и делаю там кое-что. Например:
app.get('/login', (req, res) => {
// Get user login details.
var userSession = {
user: req.body.username,
sessID: req.sessionID
}
// Store the user session somewhere, either in a Session Store.
// or a database. For now I will store it in an array.
sessionArray.push(userSession);
});
Хорошо, теперь у нашего массива будет пользовательский сеанс. Но что теперь? Каждый раз, когда пользователь пытается получить доступ к маршруту, мне нужно проверить сеанс пользователя, верно? Это не должно быть слишком сложно. Но что, если у нас будет различное происхождение приложения? Например, мое приложение VueJS находится на порте 8080, а мой сервер Express - на порту 3000. Я буду отправлять вызов AJAX из приложения Vue каждый раз, когда пытаюсь получить доступ к маршруту в приложении Vue, и проверять сервер, если сеанс / username существует внутри любой структуры данных / хранилища, в котором мы сохранили наш сеанс, и, если он существует, мы отправляем результат, указывающий, что пользователь вошел в систему и готов к работе.
Это все, что нужно? Это самая трудная вещь, с которой я когда-либо сталкивался.