使用 nestjs 身份验证时身份验证失败

沙姆纳德

我正在尝试使用 nestjs 文档实现身份验证。https://docs.nestjs.com/techniques/authentication

我正在实施 JWT 身份验证,当尝试访问正在验证的 API 时,即使在验证之前,我也收到验证错误。有没有人遇到过类似的问题。

@Get()
  @UseGuards(AuthGuard('jwt'))
  async findAll(): Promise<UserDto[]> {
    return this.userService.findAll();
  }

这条路线给了我 UnAuthorized 错误。我对 Typescript 和 nestjs 真的很陌生

我的代码在我的 GitHub 存储库中可用。请让我知道出了什么问题。https://github.com/shamnadps/TypeScript_Project/blob/master/src/user/user.controller.ts#L23

A. 大师

您 - 轻微但严重的 - 错误存在于secretOrKey您用于签署令牌的值中。src/auth/jwt.strategy.ts之间有不同的值src/auth/auth.service.ts

src/auth/auth.service.ts
而不是这个:

async createToken() {
    const user: UserDto = { name: 'shamnad', phoneNumber: '12435' };
    return jwt.sign(user, 'secretkey'); // <== /!\ focus on this one /!\
}

用这个:

async createToken() {
        const user: UserDto = { name: 'shamnad', phoneNumber: '12435' };
        return jwt.sign(user, 'secretKey'); // <== /!\ focus on this one /!\
}

因为你secretKey用来签署你的令牌,而不是secretkey(注意骆驼案例):

constructor(private readonly authService: AuthService) {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      secretOrKey: 'secretKey', // <== /!\ focus on this line /!\
    });
}

为避免此类问题,我建议您使用process.env.<your-variable>而不是直接在字符串中手动设置配置。


它看起来像这样src/auth/jwt.strategy.ts

constructor(private readonly authService: AuthService) {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      secretOrKey: process.env.SECRET
    });
}

并在src/auth/auth.service.ts,像这样:

async createToken() {
    const user: UserDto = { name: 'shamnad', phoneNumber: '12435' };
    return jwt.sign(user, process.env.SECRET); // <== /!\ focus on this one /!\
}

最后,要设置环境变量,请根据您的操作系统执行以下命令:
- Mac OS:export SECRET=<your-secret-key>
- Windows:set SECRET=<your-secret-key>


我希望它有帮助;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xcode-使用SSH身份验证添加存储库时,身份验证失败错误

来自分类Dev

使用git pull时身份验证失败

来自分类Dev

使用flask_pymongo时身份验证失败

来自分类Dev

使用flask_pymongo时身份验证失败

来自分类Dev

使用Ruby的Influxdb身份验证失败

来自分类Dev

Java MongoDB Client:访问未配置为使用身份验证的服务器时,身份验证失败

来自分类Dev

Java MongoDB Client:访问未配置为使用身份验证的服务器时,身份验证失败

来自分类Dev

Django身份验证-如果LDAP身份验证失败,请不要继续使用ModelBackend

来自分类Dev

我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?

来自分类Dev

Python社交身份验证-使用Google身份验证时导入错误

来自分类Dev

与Keepass + Putty一起使用SSH密钥身份验证时的sudo身份验证

来自分类Dev

使用基本身份验证与摘要式身份验证与Windows身份验证的原因

来自分类Dev

使用 AWS Cognito 联合身份进行身份验证失败,因为用户未经过身份验证

来自分类Dev

使用机制DIGEST的SASL身份验证失败

来自分类Dev

使用SOAP服务和IIS的Windows身份验证失败

来自分类Dev

PAM:身份验证失败,使用有效的密码

来自分类Dev

使用公钥/私钥的ssh身份验证失败

来自分类Dev

使用Node的Passport JS的Facebook身份验证失败

来自分类Dev

使用 Devise,如何自定义失败的身份验证?

来自分类Dev

在XwsSecurityInterceptor中使用SpringPlainTextPasswordValidationCallbackHandler时使用Spring Security身份验证失败的Spring Boot

来自分类Dev

使用cf push时出现CloudFoundry错误:刷新身份验证令牌时出错。身份验证请求失败:无效的身份验证令牌:无效的刷新令牌(已过期)

来自分类Dev

尝试使用jdbc从Clojure连接到Postgresql时,密码身份验证失败

来自分类Dev

使用OWIN和JWT时如何记录身份验证失败原因?

来自分类Dev

使用证书身份验证进行任何连接尝试时,RabbitMQ SSL握手失败

来自分类Dev

使用mongo连接mlab.com时身份验证失败

来自分类Dev

CakePHP 2.5.7-使用非标准用户登录时身份验证失败

来自分类Dev

使用身份验证令牌的Axios请求有时在Safari中失败

来自分类Dev

使用身份验证连接到站点时,Swift 3 NSURLSession/NSURLConnection HTTP 加载失败

来自分类Dev

使用授权类型“client_credentials”时 OAuth2 身份验证失败

Related 相关文章

  1. 1

    Xcode-使用SSH身份验证添加存储库时,身份验证失败错误

  2. 2

    使用git pull时身份验证失败

  3. 3

    使用flask_pymongo时身份验证失败

  4. 4

    使用flask_pymongo时身份验证失败

  5. 5

    使用Ruby的Influxdb身份验证失败

  6. 6

    Java MongoDB Client:访问未配置为使用身份验证的服务器时,身份验证失败

  7. 7

    Java MongoDB Client:访问未配置为使用身份验证的服务器时,身份验证失败

  8. 8

    Django身份验证-如果LDAP身份验证失败,请不要继续使用ModelBackend

  9. 9

    我应该使用中间件还是使用防护来通过Auth0和nestjs进行身份验证?

  10. 10

    Python社交身份验证-使用Google身份验证时导入错误

  11. 11

    与Keepass + Putty一起使用SSH密钥身份验证时的sudo身份验证

  12. 12

    使用基本身份验证与摘要式身份验证与Windows身份验证的原因

  13. 13

    使用 AWS Cognito 联合身份进行身份验证失败,因为用户未经过身份验证

  14. 14

    使用机制DIGEST的SASL身份验证失败

  15. 15

    使用SOAP服务和IIS的Windows身份验证失败

  16. 16

    PAM:身份验证失败,使用有效的密码

  17. 17

    使用公钥/私钥的ssh身份验证失败

  18. 18

    使用Node的Passport JS的Facebook身份验证失败

  19. 19

    使用 Devise,如何自定义失败的身份验证?

  20. 20

    在XwsSecurityInterceptor中使用SpringPlainTextPasswordValidationCallbackHandler时使用Spring Security身份验证失败的Spring Boot

  21. 21

    使用cf push时出现CloudFoundry错误:刷新身份验证令牌时出错。身份验证请求失败:无效的身份验证令牌:无效的刷新令牌(已过期)

  22. 22

    尝试使用jdbc从Clojure连接到Postgresql时,密码身份验证失败

  23. 23

    使用OWIN和JWT时如何记录身份验证失败原因?

  24. 24

    使用证书身份验证进行任何连接尝试时,RabbitMQ SSL握手失败

  25. 25

    使用mongo连接mlab.com时身份验证失败

  26. 26

    CakePHP 2.5.7-使用非标准用户登录时身份验证失败

  27. 27

    使用身份验证令牌的Axios请求有时在Safari中失败

  28. 28

    使用身份验证连接到站点时,Swift 3 NSURLSession/NSURLConnection HTTP 加载失败

  29. 29

    使用授权类型“client_credentials”时 OAuth2 身份验证失败

热门标签

归档