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-route we 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 策略

使用passport-jwt在nestJs框架中进行角色验证

Guard 不在 NestJs 中执行护照策略

NestJS JWT 策略需要一个秘密或密钥

如何使用 passport-ldapauth 库在 Nestjs 应用程序中使用动态 ldap 配置选项?