【发布时间】:2019-12-11 06:45:40
【问题描述】:
我要做的是创建一个带有 Angular 前端和带有 OAuth2 身份验证的 Spring Boot 后端的应用程序。
问题是我不知道如何访问 ROLES 用户拥有的前端,这样我就可以在页面上显示一些基于角色的内容。
是的,有OAuth 在响应中提供的范围,但问题是这些范围适用于 CLIENT,而不适用于特定的 USER 本身。而那个 CLIENT 是我的前端(如果我错了,请纠正我),这基本上意味着每个操作我的应用程序(客户端)的用户都将具有相同的范围(角色)。
此外,我可以在后端指定角色在Spring 和UserDetailsService 的帮助下,然后将这些角色与@PreAuthorize 等一起使用。但不是在前端。
举个例子,如果我只使用单个 JWT,然后使用令牌本身,我会将用户名和角色都返回到前端。然后我可以存储这些数据并根据我的需要在前端使用它。
所以我要问的是这是否真的可行,这样做是否正确? 我怎么可能实现这样的行为?
【问题讨论】:
-
@ThomasAndolf 我没有找到任何描述如何通过 OAuth 在前端使用角色的信息。如果你有链接,请与我分享。
-
如果您有 oauth 令牌,则存储该令牌。然后您可以使用该令牌获取用户对象。您将令牌传递给后端并获取您以某种状态存储在前端的用户对象(包含用户角色)。
-
通过检查状态中的用户对象及其角色,您可以根据角色显示用户可以看到的内容。如果使用 jwt,根据您使用的 oauth2 流类型,您可以将令牌交换为 jwt,并且 jwt 本身包含用户角色。您将这些以某种状态存储在前端。什么状态管理系统取决于你。有些使用 Redux,有些使用 Mobx。
-
@ThomasAndolf 谢谢,这实际上是我的想法。
标签: java angular spring spring-boot oauth-2.0