首页 > 解决方案 > Spring Security - 如何动态更改用户角色?

问题描述

我有一个关于在运行时动态改变角色的问题。假设我们有一个社交网络应用程序(如 Facebook),并且我们使用 Spring 安全性进行身份验证/授权。

当一个人打开他的主页时,这个人具有管理员角色并且可以使用他的主页做任何事情。但是,当他访问另一个朋友的主页时,他应该只有角色 USER,该角色只能执行一些受限操作(例如,他不能删除他朋友主页中的帖子)。如果我们使用 AuthenticationManagerBuilder 那么我们只能为每个用户设置一个固定角色。

谁能帮我解决这个问题?

谢谢你。

标签: javaspring-security

解决方案


我认为你应该过度考虑你的概念。用户永远是用户。拥有主页的用户是 userWithHomepage,真正的管理员是管理员。

您需要在页面上检查 currentUser 是否具有当前页面的特权 - 并在此站点上给他他的角色。

所以“UserWithHomepage”来到了他自己的主页,你检查一下:这个用户在这个网站上有特权吗?如果是:激活此站点上的管理事物。如果您将角色添加到他的 userContext,他也可以作为该角色访问其他站点。我认为,这是一个安全漏洞。

因此,只需在您的控制器上设置一个标记或每次检查,如果用户有权这样做,就会发生某些事情(实例化、按钮单击等)。


推荐阅读