首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring Security读书笔记-hierarchicalroles角色权限的设定

2012-10-26 
Spring Security读书笔记--hierarchicalroles角色权限的设定厌烦了权限角色的设定,walk through Jar文件的

Spring Security读书笔记--hierarchicalroles角色权限的设定

厌烦了权限角色的设定,walk through Jar文件的时候,发现了Spring Security有hierarchicalroles类。支持角色的继承。

试了一下的确好用,但使用过程中有许多要支持的东东。

1、XML设定

<bean id="roleHierarchy"name="code">@SuppressWarnings("unchecked")public GrantedAuthority[] getAuthorities() {// return the value according the user infologger.debug("roles is :" + DebugUtil.printObject(user.getRoles()));GrantedAuthority[] auths = new GrantedAuthorityImpl[user.getRoles().size()];int i = 0;for (Role role : user.getRoles()) {auths[i] = new GrantedAuthorityImpl(role.getAuthority());i++;}// return// roleHierarchy.getReachableGrantedAuthorities(user.getRoles().toArray// (new GrantedAuthority[0]));return roleHierarchy.getReachableGrantedAuthorities(auths);}

?要说的问题就出现在了红色部分,因为直接在Role里继承了GrantedAuthority 原来我是直接返回Roles的如果不用roleHierarchy没有任何问题。但在roleHiberarchy中就不行。

查了source发现它是在匹配的时候,用的是GrantedAuthorityImpl在collection中进行的。如果用roles就会匹配不上虽然

role也继承了GrantedAuthority 但还继承了其他东东,只好做了一个转换。

?

3.效果

如果角色ROLE_ADMIN登录,系统会给出(Granted Authorities: ROLE_ADMIN, ROLE_USER )。这样它就可以直接使用两个权限了。再也不用写@secured(ROLE_ADMIN, ROLE_USER)。一个@secured(ROLE_USER)就解决。

?

?

热点排行