angular - Nebular - 登录后未正确获取 token 有效负载

标签 angular authentication jwt nebular

我将 nebularlaravel API 与 NbPasswordAuthStrategyNbAuthJWTToken 类一起使用,如下所示:

NbAuthModule.forRoot({
  strategies: [
    NbPasswordAuthStrategy.setup({
      name: 'email',
      token: {
        class: NbAuthJWTToken,
        key: 'data.user.token',
      },
      baseEndpoint: BASE_URL + 'users/',
      login: {
        endpoint: 'login',
        method: 'post',
        redirect: {
          success: '/pages/dashboard',
          failure: null, // stay on the same page
        },
      },
    }),
  ],
  forms: {
    login: {
      rememberMe: false,
    },
    validation: {
      password: {
        minLength: 6,
      },
    },
  },
}),

登录端点响应如下:

{
"data": {
    "user": {
        "id": 114683,
        "first_name": "mhd",
        "last_name": "sultan",
        ...
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNTcyMzQ2NDMzLCJleHAiOjE2NjY5NTQ0MzMsIm5iZiI6MTU3MjM0NjQzMywianRpIjoiNmxGaDNwbWd0RVpoa0FPRSIsInN1YiI6MTE0NjgzLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.Eg4_1cXngafs1V80jqygvJDR0vZN5HuHyXV9PTeUkzA",
    }
}}

当我订阅onTokenChange时,在我的UserService中:

constructor(private authService: NbAuthService) {
this.authService.onTokenChange()
  .subscribe((token: NbAuthJWTToken) => {
    console.log(token);
    console.log(token.getPayload());
    if (token.isValid()) {
      this.user = token.getPayload(); // receive payload from token and assign it to our `user` variable
    }
  });}

正确获取 token ,但我获取包含 JWT token 属性的有效负载

enter image description here

我应该怎么做才能获取data.user对象?

最佳答案

您想要从有效负载返回的所有数据都应该在您创建 jwt token 时进行编码:

jwt.sign({
payload,
SECRET,
expiration,
});

然后可以通过 token.getPayload()

获取数据

关于angular - Nebular - 登录后未正确获取 token 有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606680/

相关文章:

asp.net-web-api - JwtAuthForWebAPI 中的 SignatureVerificationFailedException

angular - 如何在 Angular 中为 *ngFor 设置动画?

angular - 启动 IIS 调试时执行 ng serve(VS 社区)

node.js - 使用 Angular 和 Nodejs 将文件保存到 mongodb

node.js - 使用 express-jwt 作为中间件来验证 Azure AD 颁发的 token

php - 流明:jwt-auth 不存在方法句柄,已完成中间件

javascript - 在Angular2中如何实现如下操作?

asp.net-3.5 - 如何验证作为 ASP.NET Web 应用程序一部分的 ASP.NET Web 服务的用户?

authentication - 使用 2 个加密字符串进行身份验证

javascript - Angular 1 TypeScript 项目中的依赖注入(inject)