【问题标题】:Should I be using middleware or guards to authenticate with Auth0 and nestjs?我应该使用中间件还是守卫来使用 Auth0 和 nestjs 进行身份验证?
【发布时间】:2020-04-29 14:16:32
【问题描述】:

我遇到了难题。

我开始使用 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 进行身份验证。你瞧,它奏效了。

但感觉不对——我觉得我应该能够使用 @UseGuardsAuthGuard 以及所有 NestJS 装饰器的优点来完成整个授权。

所以我想我的问题是双重的:我对使用中间件而不是 NestJS 装饰器的东西犹豫不决吗?并且有没有人有一个在 NestJS 中使用装饰器的工作的简单示例?

【问题讨论】:

    标签: node.js authentication middleware nestjs auth0


    【解决方案1】:

    这有点基于意见,但是,其中很大一部分在文档中,并且是推荐的良好做法,所以我会尝试回答。

    我强烈建议使用@Guard。 NestJS 几乎所有东西都使用装饰器。它肯定是自以为是,但它以某种方式基于全世界使用的 Spring。装饰器使代码非常冗长,因为您可以清楚地看到适用于类或特定方法的内容。

    我从来没有遇到过问题,例如NestJS 中的 JWT 守卫。

    看这里:https://docs.nestjs.com/techniques/authentication#implementing-passport-jwt

    它对我来说就像一个魅力。

    无论如何 - 您也可以尝试将自定义 Guard 用于 JWT,例如https://github.com/auth0/node-jwks-rsa 。当然,它应该更容易调试,但是,据我所知,内置的 JWT 保护可以为您提供良好的日志。

    我建议将中间件用于与每个响应或请求进行交互的东西,并使用 Guards 处理所有身份验证的东西。

    【讨论】:

    • 谢谢——和我想的差不多。关于如何使用中间件的建议是正确的。只是感觉不太对。我会弄清楚@Guard 的东西。
    • 有问题随时发问,并在评论中提及我,我会尽量过来帮忙
    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多