Angular 从 JWT 获取 Spring 个角色

Angular Get Spring Roles from JWT

我的 REST 后端(使用 Spring 构建)中有两个角色:

ROLE_USER,ROLE_ADMIN

当我登录时,REST API returns 一个有效的令牌。然后我像这样将它设置在本地存储中:

localStorage.setItem('currentUser', JSON.stringify({username: username, token: token}));

当我需要它时,我会这样得到它:

localStorage.getItem('currentUser');

到目前为止一切顺利。当我获得我的令牌时,我如何获得有效负载和其中的声明?

如果你是管理员,我想显示管理面板。

jwtHelper.decodeToken($scope.jwt)

https://github.com/auth0/angular-jwt and https://github.com/auth0/angular2-jwt

一个例子https://github.com/auth0-blog/angularjs-jwt-authentication-tutorial/blob/8841ad5d7cb034506d2e3e6840db6202e6969b7a/frontend/home/home.js#L16

很难根据令牌识别用户角色,最好添加一个新标志,如 IS_ROLE_USER、IS_ROLE_ADMIN,并根据该标志检查当前用户角色。或者使用 spring 引导安全性。说不定对你有帮助。

其他答案涵盖了您问题的 spring 部分,因此我将重点回答 angular 部分。

您可以使用指令 show/hide 管理面板,如下所示:

<admin-component *ngIf="user.isAdmin"></admin-component>