我的问题是我想检查数据库中的登录令牌是否无效(更改密码后)。但是,JWTStrategy 中的验证函数只能访问 JWT 的有效负载,而不能访问令牌。我想知道是否有办法可以从此类或 JWTAuthGuard 的请求中获取 JWT 令牌。谢谢!
async validate(payload: LoginPayload) {
const { email, firstName, lastName, sub } = payload;
return {
id: sub,
email,
firstName,
lastName,
};
}
Run Code Online (Sandbox Code Playgroud)
要专门访问令牌,您需要传入passReqToCallback: true' ssuper的调用。现在该方法的第一个参数是令牌有效负载,因此您可以调用 `req.headers['authorization'].split(' ')[1] 来获取令牌本身。就像是:JwtStrategy constructor JwtStrategy#validatereq
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor() {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
secretOrKey: jwtConstants.secret,
passReqToCallback: true
});
}
async validate(req: e.Request, payload: LoginPayload) {
const rawToken = req.headers['authorization'].split(' ')[1];
const { email, firstName, lastName, sub } = payload;
return {
id: sub,
email,
firstName,
lastName,
};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2538 次 |
| 最近记录: |