如何解决Graphql身份验证选项
我至少知道两种验证用户身份的方法。
- 检查每个请求的上下文中是否有适当的Cookies / JWT,如果找到,则进行解析并将用户属性添加到所述上下文中
即。
context: async ({ ctx }) => {
// console.log(ctx);
ctx.user = await COOKIEAUTH.GetAsync(ctx,AuthRefreshQuery);
return ctx;
},
优势:
- 任何graphql方法都可以通过上下文访问用户属性;
- @authorize之类的指令可直接在graphql中使用。
缺点:
- 检查每个请求中是否包含适当的Cookies / JWT,即使发现与查询无关,也可以对其进行分析并将用户添加到上下文中。
- 为需要身份验证的属性创建中央身份验证对象
即。
graphql
type AuthSecureMutation {
Settings(input: SettingsArgs!): Settings!
}
type AuthSecureQuery {
Settings: Settings!
}
解析器
const AuthSecureMutation = async (parent,args,context,info) => {
const user = await COOKIEAUTH.GetAsync(context);
if (!user) {
throw new AuthorizationError();
}
// context.user = user; // optional?
return user;
};
const AuthSecureQuery = AuthSecureMutation;
优势
- 仅需要身份验证的查询才会应用逻辑来检查/解析cookie / jwt(性能+)
缺点
- @authorize之类的指令将无效
选项2是我想出的,我打算使用它,但是我从未在任何生产示例中看到它。有人知道选项2有什么问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。