gpt4 book ai didi

typescript - NestJs JWT 身份验证返回 401

转载 作者:行者123 更新时间:2023-12-03 21:19:30 25 4
gpt4 key购买 nike

我在nestJs 中实现了jwt 身份验证。但是,每当我尝试使用以下授权 header 进行身份验证时:

Bearer <token> or JWT <token>

我得到了 401。这些是我的身份验证文件
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
constructor(private readonly authService: AuthService) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: `${process.env.SECRET}`,
});
}

async validate(payload: Credentials) {
const user: Account = await this.authService.validateAccount(payload);
if (!user) {
throw new UnauthorizedException();
}
return user;
}
}


@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {
canActivate(context: ExecutionContext) {
return super.canActivate(context);
}

handleRequest(err, user, info) {
if (err || !user) {
throw err || new UnauthorizedException();
}
return user;
}
}

这是我的身份验证模块
@Module({
imports: [
PassportModule.register({ defaultStrategy: 'jwt' }),
JwtModule.register({
secretOrPrivateKey: `${process.env.SECRET}`,
}),
AccountModule,
],
providers: [AuthService, JwtStrategy],
controllers: [AuthController],
exports: [PassportModule, AuthService],
})
export class AuthModule {

}

最佳答案

validate仅当您传递有效的 jwt token 时才会调用。当 token 使用不同的 secret 签名或过期时,validate永远不会被调用。确保您拥有有效的 token 。例如,您可以使用 jwt debugger 检查您的 token 。 .

关于typescript - NestJs JWT 身份验证返回 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com