我有一个用于登录和用户注册的微服务。在 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',
});
}
}
谁能告诉我我做错了什么以及为什么我的身份验证策略不好?
感谢您的帮助!
答案 0 :(得分:0)
将您的 JwtStrategy
从 imports
移动到 providers
数组。提供者从不进入 imports
数组。只有模块属于那里。