快速业务通道

Spring Security 2配置精讲 下 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
ans:list>      </beans:property>  </beans:bean>  <beans:bean id="resourceSecurityInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">   <beans:property name="authenticationManager" ref="authenticationManager"/>      <beans:property name="accessDecisionManager" ref="accessDecisionManager"/>      <beans:property name="objectDefinitionSource" ref="secureResourceFilterInvocationDefinitionSource" />      <beans:property name="observeOncePerRequest" value="false" />      <custom-filter after="LAST" />  </beans:bean>  <beans:bean id="secureResourceFilterInvocationDefinitionSource" class="com.javaeye.sample.security.interceptor.SecureResourceFilterInvocationDefinitionSource" /> </beans:beans>

Spring Security 2配置精讲 下(5)

时间:2011-10-16

请注意,由于我们所实现的,是FilterSecurityInterceptor中的一个开放接口,所以我们实际上定义了一个新的bean,并通过<custom-filter after="LAST" />插入到过滤器链中去。

Spring Security对象的访问

1. 访问当前登录用户

Spring Security提供了一个线程安全的对象:SecurityContextHolder,通过这个对象,我们可以访问当前的登录用户。我写了一个类,可以通过静态方法去读取:

Java代码

public class SecurityUserHolder {     /**      * Returns the current user      *      * @return      */     public static User getCurrentUser() {         return (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();     } } public class SecurityUserHolder {  /**   * Returns the current user   *   * @return   */  public static User getCurrentUser() {   return (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();  } }

Spring Security 2配置精讲 下(6)

时间:2011-10-16

2. 访问当前登录用户所拥有的权限

通过上面的分析,我们知道,用户所拥有的所有权限,其实是通过UserDetails接口中的getAuthorities()方法获得的。只要实现这个接口,就能实现需求。在我的代码中,不仅实现了这个接口,还在上面做了点小文章,这样我们可以获得一个用户所拥有权限的字符串表示:

Java代码

/* (non-Javadoc)  * @see org.springframework.security.userdetails.UserDetails#getAuthorities()  */ public GrantedAuthority[] getAuthorities() {     List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>(roles.size());     for(Role role : roles) {         grantedAuthorities.add(new GrantedAuthorityImpl(role.getName()));     }        return grantedAuthorities.toArray(new GrantedAuthority[roles.size()]); } /**  * Returns the authorites string  *  * eg.  *    downpour --- ROLE_ADMIN,ROLE_USER  *    robbin --- ROLE_ADMIN  *  * @return  */ public String getAuthoritiesString() {     List<String> authorities = new ArrayList<String>();     for(Grant

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号