我无法在验证功能中访问来自 Express 的请求。它返回有效负载:
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';
import { PrismaService } from 'src/prisma/prisma.service';
import { Request } from 'express';
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
constructor(config: ConfigService, private prisma: PrismaService) {
super({
jwtFromRequest: ExtractJwt.fromExtractors([
(request: Request) => {
//Check if user has cookie "access_token"
if (
request.cookies &&
'access_token' in request.cookies &&
request.cookies.access_token.length > 0
) {
return request.cookies.access_token;
}
return null;
},
]),
ignoreExpiration: false,
secretOrKey: config.get('JWT_SECRET'),
});
}
async validate(request: Request, payload: any) {
console.log(request);
console.log(payload)
}
}
Request 参数返回 payload 和 payload 参数返回 [Function]
如果您希望请求显示在
validate
中,您必须将passReqToCallback: true
添加到您提供给super
的选项中,在constructor
的JwtStrategy
中。没有它,validate
的参数就是解析出来的JWT和verify
的回调函数