繁体   English   中英

Spring Security - 如何动态更改用户角色?

[英]Spring Security - How to change user roles dynamically?

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

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

任何人都可以帮我解决这个问题吗?

谢谢你。

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

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

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

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

您不应该根据他们正在访问的页面更改您的用户角色。 在您的情况下,在访问主页时,您应该检查用户是否是主页的所有者,如果是,请给他编辑/删除的选项,如果不是,请不要给他们选项(不要显示用于编辑/删除的链接,如果他们尝试执行该请求,则抛出异常)。

谢谢大家,实际检查用户是否是主页的所有者正是我们需要做的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM