Dynamic Spring安全中的动态角色层次结构

Dynamic Spring安全中的动态角色层次结构,dynamic,spring-security,hierarchy,roles,Dynamic,Spring Security,Hierarchy,Roles,我简直不敢相信我所发现的定义角色层次结构的所有东西都是一些奇怪的“>”赋值的.xml符号。必须有一种方法从数据库定义的角色层次结构创建角色层次结构对象 我正在考虑一个表,它包含以下列: 角色id 子角色id 定义角色和角色之间的多对多关系说:哪个角色有哪个孩子?我想我更喜欢孩子而不是家长,因为在那些.xml文件中设置层次结构的方式是:ADMIN>USER,USER>VISITOR (顺便说一句,这让我想知道标准实现是否也支持ADMIN>USER、VISITOR之类的东西,这意味着USER和V

我简直不敢相信我所发现的定义角色层次结构的所有东西都是一些奇怪的“>”赋值的.xml符号。必须有一种方法从数据库定义的角色层次结构创建角色层次结构对象

我正在考虑一个表,它包含以下列:

  • 角色id
  • 子角色id
定义角色和角色之间的多对多关系说:哪个角色有哪个孩子?我想我更喜欢孩子而不是家长,因为在那些.xml文件中设置层次结构的方式是:ADMIN>USER,USER>VISITOR

(顺便说一句,这让我想知道标准实现是否也支持ADMIN>USER、VISITOR之类的东西,这意味着USER和VISITOR“在同一级别上”。)

现在如果我想打电话

roleHierarchy.getReachableGrantedAuthorities(authentication.getAuthorities()));
我需要一个RoleHierarchy实现对象。SpringSecurity提供了一个,但是setter只接受这种奇怪的字符串表示。我真的不想将数据库结果转换为字符串表示,而是使用某种树结构

因此,唯一的方法似乎是扩展实现并编写自己的setter来使用数据库结果集来构建
rolesReachableInOneStepMap
rolesReachableInOneOrMoreStepMap

或者有人知道不同的解决方案吗


感谢您的指点或确认

我们通过实施
角色层次结构
,解析
用户详细信息服务
内部的层次结构,并在
角色
角色
之间使用m:n自引用关系,提出了自己的解决方案。
这样,层次结构就保存在数据库中,在应用程序启动时缓存,在需要时进行更新,并在登录时创建UserDetails对象时用于解析所有的
GrantedAuthority

扩展Spring的实现并编写自己的setter有什么问题?我没有看到。是的,我实现了我自己版本的角色管理。但我仍然对这种奇怪的字符串格式感到好奇。我想没有别的选择了。这有点晚了,但您想知道的是,在SpringSecurity4.0.0中起作用了。i、 e.A>B,A>C