Я делаю простое приложение для регистрации, используя Koa, koa-passport , passport-local и koa-joi-router , которое используется только для проверкитело JSON.Примеры предлагают использовать passport.authenticate
следующим образом:
router.route({
method: 'post',
path: '/signup',
validate: {
type: 'json',
body: {
username: Joi.string().required(),
password: Joi.string().required()
}
},
async handler(ctx, next) {
const body: {
username: string,
password: string,
} = ctx.request.body;
try {
await User.createAndSave(body.username, body.password);
return passport.authenticate('local', async (error, user, info, status) => {
if(error) {
ctx.throw(500);
} else if(user) {
await ctx.login(user);
} else {
ctx.throw(400);
}
})(ctx, next);
} catch {
ctx.throw(500);
}
}
}
Как вы можете видеть, я сначала ввожу пользователя в свою базу данных, а затем вызываю passport.authenticate
, но, как ни странно, не передавайте имя пользователя или парольпользователь к нему.Так как же эта функция должна знать, какого пользователя я хочу найти?