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

Как избавиться от проблемы Error: Failed to serialize user into session?

Когда переходишь на роут logout, чтобы разлогинится, то получаю ошибку Error: Failed to serialize user into session. Уже не пойму как его исправлять
app.js
const Koa = require('koa'),
    router = require('./router/auth'),
    bodyParser = require('koa-bodyparser'),
    session = require('koa-session'),
    passport = require('./bin/passport'),
    app = new Koa();

app.keys = ['Secret CRM Key'];
app.use(session({}, app));
app.use(bodyParser());

app.use(passport.initialize());
app.use(passport.session());
app.use(router.routes());
module.exports = app;

В bin/passport.js
const passport = require('koa-passport'),
    LocalStrategy = require('passport-local').Strategy,
    User = require('../models/user');

passport.use(new LocalStrategy(
    (username, password, done) => {
        User.findOne({username}, (err, user) => {
            if (err) {
                return done(err);
            }
            if (!user || !user.checkPassword(password)) {
                return done(null, false, {message: 'Нет такого пользователя или пароль неверен.'});
            }
            return done(null, user);
        });
    })
);

passport.serializeUser((user, done) => {
    done(null, user);
});

passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => {
        done(err, user.username);
    })
});
module.exports = passport;

И в роуте router/auth.js
/** Аторизация */
router.post('/', passport.authenticate('local', {
    successRedirect: '/user',
    failureRedirect: '/',
}))
/** Выход из системы*/
router.get('/logout', async ctx => {
    ctx.isAuthenticated();
    await ctx.login();
    ctx.redirect('/');
});
  • Вопрос задан
  • 672 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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