Задать вопрос
dmc1989
@dmc1989

Почему при первой авторизации пользователь не авторизирован?

Странная ситуация - вроде авторизация рабочая, но при первой проверке авторизации пользователь считается не авторизированным.

Как все происходит ( захожу на страницу логин ):
// запуск сервера
Executing (default): CREATE TABLE IF NOT EXISTS `Sessions` 

// перешел на страницу логина
Executing (default): SHOW INDEX FROM `Sessions`
Executing (default): SELECT `sid`, 

// нажимаю кнопку логин
Executing (default): SELECT USER
USER IS CORRECT
USER: {...}  // serialize user
USER IS AUTHENTICATED
Executing (default): SELECT `sid`
Executing (default): SELECT `sid`
Executing (default): UPDATE `Sessions`

// срабатывает success redirect в Passport.js
CHECK AUTH FALSE
Executing (default): UPDATE `Sessions`
Executing (default): SELECT `sid`
USER ID: 18ea8856-af53-4386-a094-7a93989f86fb  // deserialize user
Executing (default): SELECT USER BY ID
Executing (default): UPDATE `Sessions`


И перекидывает обратно на логин, но req.user есть, и если потом перейти на другую вкладку то он считается авторизированным и req.isAuthenticated == true, а если еще раз залогинится, то нормально перекидывает на главную.

// ROUTER
app.get('/login', authRouter.login.get);
  app.post('/login', authRouter.login.post);
  app.get('/sign-up', authRouter.authorize.get);
  app.post('/sign-up', authRouter.authorize.post);

  // check auth
  app.get('/*', authRouter.checkAuth);

  app.get('/logout', authRouter.logout);
  app.get('/', frontpageRouter.get);


// ПРОВЕРКА ПОЛЬЗОВАТЕЛЯ
module.exports.checkAuth = (req, res, next) => {
  if (!req.isAuthenticated()) {
    console.log("CHECK AUTH FALSE");
    res.redirect('/login');
  } else {
    console.log("CHECK AUTH TRUE");
    next();
  }
}


// LOGIN
module.exports.login = {
  get: (req, res) => {
    res.set('Content-Type', 'text/html');
    res.render('sign_in.pug', {
      user: req.user
    });
  },
  post: passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' })
}


В остальном стандартный паспорт могу и его кинуть, но все же что же не так, авторизация же рабочая, но при первом входе проблемы. Буду рад всем советам)
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Сложный 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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