Rya*_* Ro 1 rest graphql auth-guard nestjs
根据文档,为了使用 AuthGuard 进行 GraphQL 解析器的身份验证,我们必须重写getRequest如下方法:
getRequest(context: ExecutionContext) {
const ctx = GqlExecutionContext.create(context);
return ctx.getContext().req;
}
Run Code Online (Sandbox Code Playgroud)
我的大多数 API 使用 GraphQL,但其他 API 使用 REST 端点来处理文件上传。(我提到了这个)现在,我正在使用两个 AuthGuard。一种是针对 GraphQL,我getRequest像上面一样重写了它。另一种是针对 REST 的,其代码完全相同,除了(这次我没有覆盖它)以及调用后从请求中getRequest提取对象的方式。usercanActivate
图形语言:
// getRequest is overridden
const user: User = this.getRequest(context).user;
Run Code Online (Sandbox Code Playgroud)
休息:
// getRequest is NOT overridden
const { user } = context.switchToHttp().getRequest();
Run Code Online (Sandbox Code Playgroud)
有什么方法可以尝试将这两个 AuthGuard 合二为一吗?
为什么不为该getRequest方法提供类似的内容:
getRequest(context: ExecutionContext) {
if (context.getType<ContextType | 'graphql'>() === 'graphql') {
return GqlExecutionContext.create(context).getContext().req;
}
return context.switchToHttp().getRequest();
}
Run Code Online (Sandbox Code Playgroud)
现在你只需要一名警卫。req.user无论使用 GraphQL 还是 REST,填充的内容都是相同的
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |