Java Spring安全-如何动态更改用户角色?

Java Spring安全-如何动态更改用户角色?,java,spring-security,Java,Spring Security,我有一个关于在运行时动态更改角色的问题。假设我们有一个社交网络应用程序(如Facebook),我们使用Spring security进行身份验证/授权 当一个人打开他的主页时,这个人具有管理员角色,可以用他的主页做任何事情。但是,当他访问另一个朋友的主页时,他应该只有只能执行某些受限操作的角色用户(例如,他不能删除朋友主页中的帖子)。 如果我们使用AuthenticationManagerBuilder,那么我们只能为每个用户设置一个固定角色 有人能帮我回答这个问题吗 谢谢。我认为你应该过度思考

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

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

有人能帮我回答这个问题吗


谢谢。

我认为你应该过度思考你的概念。用户永远是用户。 具有主页的用户是具有主页的用户 真正的管理员就是管理员

您需要在页面上检查当前用户是否具有当前页面的权限,并将其角色赋予他

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


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

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

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

我猜您需要探索基于属性的访问控制