【发布时间】:2021-07-26 23:11:31
【问题描述】:
我有一个用于登录和用户注册的微服务。在localhost:8080 和正文{ "username": "test", "password":"test"} 上发起请求后,我得到一个身份验证令牌,例如:{ "token":"asdfsadfasdf..." },
在我的端点上启动请求之前,我必须在另一个微服务中使用这个令牌来验证用户身份,我有这样的代码:
import { Injectable } from "@nestjs/common";
import { AuthGuard } from "@nestjs/passport";
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}
@Get()
@UseGuards(JwtAuthGuard)
private async getHello(): Promise<void> {
console.log("Hello world");
}
@Module({
imports: [
JwtModule.register({
secret: 'secretKey',
}),
JwtStrategy,
PassportModule.register({ defaultStrategy: 'jwt' })
],
providers: [AppService],
controllers: [AppController]
})
export class AppModule{}
启动我的Get 请求后,我收到一个错误:
[Nest] 10472 - 04.05.2021, 17:14:00 [ExceptionsHandler] Unknown authentication strategy "jwt" +3677ms
Error: Unknown authentication strategy "jwt"
策略
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
constructor() {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: 'secret',
});
}
}
谁能告诉我我做错了什么以及为什么我的身份验证策略不好?
感谢您的帮助!
【问题讨论】:
-
您必须展示您的策略,我们才能提供帮助。如果我不得不猜测,该策略是请求范围的。
-
@JayMcDoniel,我在底部添加了策略,你能看吗?,我需要使用来自外部服务的令牌,我知道如何使用“多合一应用”来做到这一点,但在这里,我有一个问题
标签: javascript typescript nestjs