Коа-роутер не работает с паспортно-локальной стратегией - PullRequest
0 голосов
/ 02 апреля 2020

passport.authenticate от koa-passport не работает с локальной стратегией. Я не использую ни сессий, ни сериализации. Это просто пример паспорта, но ответ сервера всегда 404.

const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const passport = require('koa-passport');
const Router = require('koa-router');
const LocalStrategy = require('passport-local').Strategy;

const app = new Koa();

app.use(bodyParser());
app.use(passport.initialize());

passport.use(new LocalStrategy({
    session: false,
    }, (email, password, done) => {
      if(email && password){
          return done(null, [email, password]);
      }
      else {
          return done(null, false);
      }
    }
));

const router = new Router();

router.post('/auth', async (ctx) => {
    passport.authenticate('local', { session: false }, (err, user) => {
        if(!user)
            return ctx.body = 'Failed!';

        return ctx.body = { msg: 'Success' };
    });
});

app.use(router.routes());

app.listen(3000, console.log('The server is started'));

1 Ответ

0 голосов
/ 02 апреля 2020

Глубокий ответ на вопросы о github-репо koa-router: Мы должны вернуть passport.authenticate с переданным контекстным объектом:

router.post('/auth', async (ctx) => {
    return passport.authenticate('local', { session: false }, (err, user) => {
        if(!user)
            return ctx.body = 'Failed!';

        return ctx.body = { msg: 'Success' };
    })(ctx, next);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...