spring-security - 如何在 Spring Security 4 中创建子级别角色?
问题描述
给你一个问题。在我的应用程序中,我使用的是 Spring Security 4 。现在,我想拥有一个不同的级别——角色。看一个例子。
现在:
角色1:管理员;
角色2:客户。
成为:
- 角色1:管理员;
- 角色2:客户A/客户B/客户C;
然后,我想在我的菜单 jsp 页面中使用 spring 安全标签来从客户 A / 客户 B / 客户 C 中以相同的角色(角色 2)获取一些不同的菜单。
提前致谢。
解决方案
您可以通过公开RoleHierarchy
bean 来设置角色层次结构。
@Bean
public RoleHierarchy roleHierarchy() {
RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_ONE\nROLE_A > ROLE_TWO\nROLE_B > ROLE_TWO\nROLE_C > ROLE_TWO");
return roleHierarchy;
}
这就是说,如果用户是,"ROLE_ADMIN"
那么他们也是"ROLE_ONE"
。
如果用户是,"ROLE_A"
那么他们也是"ROLE_TWO"
。
如果用户是,"ROLE_B"
那么他们也是"ROLE_TWO"
。
如果用户是,"ROLE_C"
那么他们也是"ROLE_TWO"
。
您可以通过使用换行符\n
分隔多个角色层次结构来定义它们。
推荐阅读
- php - Laravel - 刀片未在浏览器中加载
- ruby-on-rails - 即使在捆绑安装之后,rails 也找不到 gem
- javascript - 如何让 Facebook 评论插件与 VueJS 一起使用
- c++ - 如何解决我的动态规划问题?
- java - 使用带有 JDBC Bolt 驱动程序的 Neo4j 嵌入式数据库的 Spring Boot 测试
- html - Safari z-index 错误
- android - Android LiveData Observer 没有被第二次触发
- webgl - 如何处理 webglcontextrestored 事件
- extern - 如何防止闭包编译器重命名特定对象的任何属性或方法?
- javascript - 尝试从帮助程序导入 HTML,但 Rails 不喜欢它