Почему req.isAuthenticated из passposrtjs возвращает false на dev сервере?

У меня есть проект на nodejs + express с авторизацией на passportjs.

Если я авторизуюсь на своем локальном хосте (localhost:3000) , то `req.isAuthenticated` возвращает true и сессия пользователя работает корректно.

но если сделать тоже самое на дев сервере, то сессия падает, так как req.isAuthenticated вернет false.

Пытались смотреть внутрь самих модулей, вроде все отрабатывает корректно. Код одинаковый и так и так, версии использованных модулей тоже.

Вот часть кода:
express-session.js
var session = require('express-session'),
express = require('express'),
RedisStore = require('connect-redis')(session);

var date = new Date;
date.setDate(date.getDate() + 30);

module.exports = session({
    secret: 'SECRET',
    resave: true, //don't save session if unmodified
    saveUninitialized: true, // create session until something stored
    expires: date.toUTCString(),
    cookie: {
        secure: false,
        httpOnly : true,
        maxAge : 30 * 60 * 1000 //30 minutes
    },
    rolling: true
});


login.js
exports.post = function (req, res, next) {
passport.authenticate('local', { badRequestMessage: 'Error in your fields' },
    function (err, user, info) {
        if (err) return next(err);
        if (user) {
            req.logIn(user, function (err) {
                if (err) return next(err);
                return res.format({
                    json: function () {
                        res.json({
                            link : '/personal/cabinet/'
                        });
                    }
                });
            });
        } else {
            return res.format({
                html: function () {
                    res.render('auth/login', {
                        error: info.message,
                        title: 'Login'
                    });
                },
                json: function () {
                    res.json(info);
                }
            });
        }
    }
  )(req, res, next);
};


pasportjs
var passport = require('passport'),
localStrategy = require('./strategy/localStrategy'),
models = require('models'),
Author = models.author;

//get user data for session
passport.serializeUser(function (user, done) {
    done(null, user);
});
passport.deserializeUser(function (user, done) {
  Author.findOne({
    where: {
        id: user.id
    }
  }).then(function (user) {
    done(null, user);
  });
});

localStrategy(passport);

module.exports = passport.initialize();


app.js
...
app.use('bodyParserJson');
app.use('bodyParserUrldecoded');
app.use('cookieParser');
app.use(path.join('authPassport', 'session')); //express-session
app.use(path.join('authPassport', 'init')); //pasportjs
app.use(passport.session());

...


Версии: passport: 0.3.2, express-session: 1.13.0, express: 4.13.1, nodejs: 4.2.6

Подскажите в чем может быть проблема? Куда посмотреть детальней? Спасибо!
  • Вопрос задан
  • 595 просмотров
Пригласить эксперта
Ответы на вопрос 1
@poshlipismo
Вы получаете объект пользователя в middleware, где у вас req.isAuthenticated?
Я тоже не могу понять. Объект пользователя получен, значит все валидации прошли успешно.
Куку получаю, она лежит на клиенте, где ей и положено лежать.
Что это может быть? Сессии?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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