我无法相信我发现定义角色层次结构的是一些奇怪的.xml符号“>”分配。必须有一种从数据库定义的角色层次结构创建RoleHierarchy对象的方法。?!
我正在考虑一个包含列的表:
定义角色和角色之间的多对多关系说:哪个角色有哪些孩子?我认为我更喜欢孩子而非父母,因为这是在.xml文件中设置层次结构的方式:ADMIN>用户,用户>来访者。
(顺便说一句,这让我想知道标准实现是否也支持ADMIN> USER,VISITOR等意味着USER和VISITOR“在同一级别上”。)
现在,如果我想打电话
roleHierarchy.getReachableGrantedAuthorities(authentication.getAuthorities()));
我需要一个RoleHierarchy Implementation对象。 spring-security提供了一个,但是setter只接受这个奇怪的字符串表示。我真的不想将我的数据库结果转换为字符串表示,而是使用某种树结构。
所以唯一的方法似乎是扩展Implementation并编写自己的setter来使用我的数据库结果集来构建rolesReachableInOneStepMap
和rolesReachableInOneOrMoreStepMap
。
或者有人知道不同的解决方案吗?
感谢您的任何指示或确认!
答案 0 :(得分:1)
我们通过实施RoleHierarchy
,解决UserDetailsService
内的层次结构并使用Role
和Role
之间的m:n自引用关系来提出我们自己的解决方案。
因此,层次结构保存在数据库中,在应用程序启动时缓存,在需要时更新,并在登录时创建UserDetails对象时用于解析所有GrantedAuthorities
。