我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?相关的知识,希望对你有一定的参考价值。
我有一个难题。
我开始使用NestJS构建老式的REST API待办事项服务器。然后,使用您使用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可以提供良好的日志。
我建议将中间件用于与每个和每个响应或请求交互的事物,并为所有身份验证事物使用警卫。
以上是关于我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章