Koa Passport认证

时间:2019-09-19 18:21:49

标签: node.js passport.js koa passport-local

我正在使用Koa,koa-passportpassport-localkoa-joi-router制作一个简单的注册应用,仅用于验证body 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,但奇怪的是,请勿将用户名或密码传递给它。那么该函数应该如何知道我想要它找到哪个用户?

1 个答案:

答案 0 :(得分:0)

经过一番搜索,我发现用户名和密码正文字段名称是在passport-local包中设置的。 Reference