Passport 策略如何知道在 nestJS 中选择正确的 jwt 策略?
Posted
技术标签:
【中文标题】Passport 策略如何知道在 nestJS 中选择正确的 jwt 策略?【英文标题】:How Passport strategy knows to pick the right jwt strategy in nestJS? 【发布时间】:2021-06-11 19:42:25 【问题描述】:我正在关注https://www.codemag.com/Article/2001081/Nest.js-Step-by-Step-Part-3-Users-and-Authentication 在nestJS 中使用passport 实现jwt,一切都按预期工作,但我对这种方法有一个澄清,如果我们使用UseGuards(@AuthGurads()),应用程序知道使用passportstrategy验证令牌并调用 validate 方法以进一步进行,但是为什么护照策略知道正确的 jwt 策略类来选择调用 validate 方法,没有明确提到我们要求护照策略使用 jwtStrategy 类,它是不是默认导出,但在验证令牌后仍然如何为 validate 方法调用正确的 JwtStrategy 类?
【问题讨论】:
docs.nestjs.com/security/authentication#login-routewe are using an AuthGuard that @nestjs/passportautomatically provisioned for us when we extended the passport-local strategy.
【参考方案1】:
答案的重要内容在这个代码块中:(从链接的文章中提取)
@Module(
imports: [ ...,
PassportModule.register(
defaultStrategy: 'jwt',
property: 'user',
session: false,
), ...
],
controllers: [AuthController],
providers: [AuthService, JwtStrategy],
exports: [PassportModule],
)
export class AuthModule
defaultStrategy
告诉 Nest “当我使用 AuthGuard()
时,请将此策略作为使用的策略”。在这种情况下,'jwt'
。每个护照策略都有一个默认的护照名称,以了解正在使用的策略。对于passport-jwt
,它是(惊喜,惊喜)'jwt'
【讨论】:
以上是关于Passport 策略如何知道在 nestJS 中选择正确的 jwt 策略?的主要内容,如果未能解决你的问题,请参考以下文章
我在我的 nestJS 应用程序(使用 authGuard)中使用了 passport-jwt 身份验证策略,如何访问我的控制器中的令牌有效负载?
NestJS:使用 graphql 的 Passport LinkedIn 策略