java - Spring Security - 如何动态更改用户角色?
问题描述
我有一个关于在运行时动态改变角色的问题。假设我们有一个社交网络应用程序(如 Facebook),并且我们使用 Spring 安全性进行身份验证/授权。
当一个人打开他的主页时,这个人具有管理员角色并且可以使用他的主页做任何事情。但是,当他访问另一个朋友的主页时,他应该只有角色 USER,该角色只能执行一些受限操作(例如,他不能删除他朋友主页中的帖子)。如果我们使用 AuthenticationManagerBuilder 那么我们只能为每个用户设置一个固定角色。
谁能帮我解决这个问题?
谢谢你。
解决方案
我认为你应该过度考虑你的概念。用户永远是用户。拥有主页的用户是 userWithHomepage,真正的管理员是管理员。
您需要在页面上检查 currentUser 是否具有当前页面的特权 - 并在此站点上给他他的角色。
所以“UserWithHomepage”来到了他自己的主页,你检查一下:这个用户在这个网站上有特权吗?如果是:激活此站点上的管理事物。如果您将角色添加到他的 userContext,他也可以作为该角色访问其他站点。我认为,这是一个安全漏洞。
因此,只需在您的控制器上设置一个标记或每次检查,如果用户有权这样做,就会发生某些事情(实例化、按钮单击等)。
推荐阅读
- python - 如何将类实例转发到依赖文件?
- ios - Xcode 无法构建 React Native 项目,架构 x86_64 的未定义符号
- python - tkinter 我如何理解没有说什么错误的错误?
- css - 在 MS powerapps 控件中使用 react-bootstrap-typeahead 时,下拉列表隐藏在其他输入字段下
- hyperledger-fabric - 中间 CA 不创建 tls-cert.pem
- python - 在同一个类中使用另一个函数的输出
- node.js - 更新矩阵中的元素,该矩阵是嵌套在另一个文档中的文档的字段
- postgresql - Postgres 中的共享扫描
- reactjs - 更改文本输入中的字体大小根据屏幕大小做出本机反应
- javascript - Webpack 外部反应导致 React Hooks 错误