我最近创建了一个包来管理它,扩展了 passport-jwt 以允许将一组 passport-jwt 配置传递给构造函数。当请求到达时,使用标准的 passport-jwt 代码并行检查每个配置,以查看是否应该授权 JWT。
这是包:https ://www.npmjs.com/package/@mestrak/passport-multi-jwt 。
jwt.strategy.ts
在 NestJS 中,你会在(或任何你的策略设置文件被调用)中做这样的事情。
import { ExtractJwt, Strategy } from '@mestrak/passport-multi-jwt';
import { PassportStrategy } from '@nestjs/passport';
import { Injectable } from '@nestjs/common';
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor() {
super([{
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
secretOrKey: 'a_secret_key',
},
{
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
secretOrKey: 'another_secret_key',
}]);
}
async validate(payload: any) {
return payload;
}
}