我正在使用 GraphQL Yoga 开发突变解析器,并将 Prisma 用于我的后端。突变用于进行身份验证并在成功登录时返回 JWT。突变目前看起来像这样:
loginEmployer: async (_, args, context, info) => {
const employer = await context.prisma.query.employer({
where: {
name: args.name,
}
})
const match = await bcrypt.compare(args.password, employer.hashedPassword);
if (match) {
return jwt.sign(employer, jwtSecret);
} else {
return "";
}
}
如您所见,该算法相当简单:找到具有匹配名称的雇主,将存储的散列密码与使用 bcrypt 的传入密码进行比较,如果匹配则返回签名的 jwt。很标准的东西。
但是,在没有匹配的情况下,或者如果没有与该名称匹配的雇主,我想用 403 回复。在快递中,我只是这样做res.status(403).send({error: "No such username/password"})
,但使用 GraphQL Yoga 我有点迷路并且不能查找有关如何执行此操作的任何文档。
感谢您对此进行整理或指出正确方向的任何回复:)