@Scorpiored88

Как правильно работать с сессиями в node+express?

Всем доброго!
Решил попробовать поигратся немного с авторизацией, с помощю сессий.
Столкнулся с проблемой когда заканчивается срок жизни сессии cookie: {maxAge: new Date(Date.now() + (60 * 1000 * 1))} повторно засетить что то в req.session не получается :(

Вот кусок моего кода:

let session = require('express-session');

app.use(session({
    secret: 'aaa2C44-4D44-WppQ38Siuyiuy',
    cookie: {maxAge: new Date(Date.now() + (60 * 1000 * 1))},
    resave: true,
    saveUninitialized: true
}));

let checkSignIn = (req, res, next) => {
    if (req.session.user) {   // после истичения сессии req.session.user всегда undefined, 
                                       //несмотря на то что в 
                                       //логине я повторно задаю это
                                     // свойство req.session.user = user['_id']
        next();
    } else {
        res.redirect("/login");
    }
}

app.post("/login",  (req, res) => {
   if(req.body.usr == user && req.body.pwd == password)
           req.session.user = user['_id']
           res.redirect("/manage");
        } else {
            console.log('Could not find user')
            res.render('login')
        }


    })


})


app.get("/manage", checkSignIn, (req, res) => {
        res.render('index')
})


В результате первый раз логин проходит удачно, но после того как сесия истечет, повторно залогинится не удается, почему то при проверке в кастомном миделвере checkSignIn req.session.user == undefined хотя в "/login" это свойство задается так же как и в первый раз req.session.user = users['_id']

Не понимаю почему так происходит. Подскажите пожалуйста как это исправить
  • Вопрос задан
  • 2964 просмотра
Решения вопроса 1
@Scorpiored88 Автор вопроса
Заменил cookie.maxAge с дати на время и все отлично :)
тоесть с new Date(Date.now() + (60 * 1000 * 1)) на 90000
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
users['_id'] === users._id
судя по сущности думаю что users instanceof Array === true
отсюда users._id не существует, равен undefined
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы