【问题标题】:How to authenticate user with external auth service?如何使用外部身份验证服务对用户进行身份验证?
【发布时间】: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


【解决方案1】:

JwtStrategyimports 移动到providers 数组。提供者从不进入imports 数组。只有模块属于那里。

【讨论】:

    猜你喜欢
    • 2012-09-06
    • 2016-07-29
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多