我处于一个难题中。
我开始使用NestJS构建良好的老式REST API待办事项服务器。然后,使用您可以使用的这篇文章向其中添加Auth0 AuthGuard
:
https://auth0.com/blog/developing-a-secure-api-with-nestjs-adding-authorization/
但是,我始终无法正常工作,总是出现401 Unauthorized
错误。真令人沮丧。
然后我找到了这篇文章:
https://auth0.com/blog/full-stack-typescript-apps-part-1-developing-backend-apis-with-nestjs/
那让我构建了中间件以通过Auth0和JWT进行身份验证。瞧,它奏效了。
但感觉错了-我觉得我应该可以做整个事情的授权使用@UseGuards
,并AuthGuard
和所有NestJS装饰善良。
所以我想我的问题有两个方面:我犹豫是否要在NestJS装饰器上使用中间件?有人在NestJS中使用装饰器东西有一个简单的工作示例吗?
这是基于意见的,但是其中很大一部分是在文档中,建议您采用良好的做法,因此我将尝试回答。
我强烈建议您使用@Guard
。NestJS几乎所有东西都使用装饰器。它是否肯定有根据,但它基于某种方式在全球范围内使用的Spring之上。装饰器使代码非常冗长,因为您可以清楚地看到适用于类或特定方法的代码。
我从来没有遇到过NestJS中的JWT Guards问题。
在这里看看:https : //docs.nestjs.com/techniques/authentication#implementing-passport-jwt
对我来说,它就像是一种魅力。
无论如何-您也可以尝试将您的自定义Guard for JWT与https://github.com/auth0/node-jwks-rsa一起使用。可以肯定的是,调试起来应该更容易,但是,据我所知,内置的JWT Guard可以为您提供良好的日志。
我建议使用Middleware来处理与每个和每个响应或请求交互的内容,并使用Guards来处理所有auth内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句