NestJS JwtStrategy 使用 configService 传递密钥

Posted

技术标签:

【中文标题】NestJS JwtStrategy 使用 configService 传递密钥【英文标题】:NestJS JwtStrategy use configService to pass secret key 【发布时间】:2018-12-01 07:08:58 【问题描述】:

我有来自文档示例 (https://docs.nestjs.com/techniques/authentication) 的 JwtStrategy 类:

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) 
    constructor(
        private readonly authService: AuthService,
        private readonly configService: ConfigService,
    ) 
        super(
            jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
            secretOrKey: this.configService.getSecretKey,
        );
    
    // ...

当我在调用 super() 之前尝试访问 this 时出现错误。但我仍然想使用 configService 来获取密钥。

我知道我可以使用 env var 来做到这一点,但在我看来,服务方法是更清晰的解决方案。

如何使用 configService 或从中获取价值并传递给 super() 调用?谢谢。

【问题讨论】:

【参考方案1】:

只需删除this.,请参见此处:

secretOrKey: configService.getSecretKey

自从configService 已作为参数传递后,它将起作用。

【讨论】:

为了避免“声明了属性 'configService' 但从不读取其值。”我还不得不从private readonly configService: ConfigService 中删除private 我可以确认,您不能有 private 关键字并在 constructor 内的 super() 调用中使用该属性

以上是关于NestJS JwtStrategy 使用 configService 传递密钥的主要内容,如果未能解决你的问题,请参考以下文章

有或没有 tsconfig 目标 es5 的 NestJS 和 TypeORM 问题

有效的 JWT 对 NestJS 守卫无效

NestJs 使用 jwt 和私钥和公钥进行身份验证

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

NestJs:确保你的班级用合适的装饰器装饰

如何在 Angular / nx 工作区的上下文中运行 nestjs-console 命令