我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?相关的知识,希望对你有一定的参考价值。

我有一个难题。

我开始使用NestJS构建老式的REST API待办事项服务器。然后,使用您使用AuthGuard

的这篇文章向其中添加Auth0

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进行身份验证。瞧,它奏效了。

但是感觉很不对,我觉得我应该可以使用@UseGuardsAuthGuard以及所有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进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Express / Auth0 后端登录用户

nodejs(express)中的Auth0中间件给出错误:aggrinfo ENOTFOUND

在 Auth0 中授权后访问令牌

使用中间件保护 Expressjs 路由

我如何模拟 auth0 身份验证以进行测试?

如何查看存储在 JWT 中的数据?使用 auth0 和 express-jwt