Для разработки механизмов авторизации в express имеется модуль express-session
Установка модуля:
npm install --save express-session
Подключение в файле app.js
var session = require('express-session');
В этом же файле, после инициализации объекта app
добавляем сессионный ключ.
app.use(session({secret: "Shh, its a secret!"}));
После подключения модуля становится доступным объект session
. Промежуточное программное обеспечение сеанса создает сеанс, устанавливает cookie сеанса и создает объект сеанса в объекте req
.
Рассмотрим пример для файла app.js, в котором показано, как создать локальную переменную user_id, которая будет доступна всему приложению, в том числе файлам шаблона.
app.use(function (req, res, next) { res.locals = { user_id: req.session.user_id } next(); })
Сессионную переменную можем реализовать в экшне авторизации:
router.post('/login', function (req, res, next) { User.findOne({where: {email: req.body.email, password: req.body.password}}) .then(data => { if (data) { req.session.user_id = data.id; res.redirect('/'); } else { res.render('login', {errorText: 'error exit'}) } }) .catch(error => { console.log(error); res.send('error'); }) });
В базовом шаблоне мы можем проверить переменную user_id
if user_id a(href='/user/cabinet') Кабинет пользователя a(href='/user/logout') Выход else a(href='/user/register') Регистрация a(href='/user/login') Вход