Spring security用户URL权限FilterSecurityInterceptor使用解析

  

这篇文章主要介绍了Spring security用户URL权限FilterSecurityInterceptor使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

用户通过浏览器发送URL地址,由FilterSecurityInterceptor判断是否具有相应的访问权限。
  

  

对于用户请求的方法权限,例如注解@PreAuthorize (“hasRole(管理)”),由MethodSecurityInterceptor判断
  

  

两个拦截器都继承了AbstractSecurityInterceptor

  

代码如下

     /*   *版权2004、2005、2006 Acegi科技企业有限公司   *   *在Apache许可下的,2.0版本(“许可证”);   *你可能不使用这个文件除了遵守许可证。   *你可以获得许可证的副本   *   * http://www.apache.org/licenses/license - 2.0   *   *,除非适用法律要求或书面同意,软件   *在许可证下发布的分布在一个“目前的”基础上,   *没有任何形式的保证或条件,明示或默示。   *查看许可证的管理权限和特定的语言   *限制下的许可。   */包org.springframework.security.web.access.intercept;   进口java.io.IOException;   进口javax.servlet.Filter;   进口javax.servlet.FilterChain;   进口javax.servlet.FilterConfig;   进口javax.servlet.ServletException;   与javax . servlet . servletrequest进口;   进口javax.servlet.ServletResponse;   进口org.springframework.security.access.SecurityMetadataSource;   进口org.springframework.security.access.intercept.AbstractSecurityInterceptor;   进口org.springframework.security.access.intercept.InterceptorStatusToken;   进口org.springframework.security.web.FilterInvocation;/* *   *执行HTTP资源通过滤波器实现的安全处理。   *通过筛选器实现对HTTP资源的安全处理。   * & lt; p>   * & lt; code> SecurityMetadataSource</code>这个安全拦截器所需要的   *类型{@link FilterInvocationSecurityMetadataSource}。   * & lt; p>   *安全拦截器所需的SecurityMetadataSource类型是FilterInvocationSecurityMetadataSource   *   *指{@link AbstractSecurityInterceptor}细节的工作流程。   * & lt;/p>   *   * @author Ben Alex   * @author Rob绞车   */公共类FilterSecurityInterceptor AbstractSecurityInterceptor扩展实现   过滤器{//~静态字段初始值设定项//=====================================================================================私有静态最终字符串FILTER_APPLIED=癬_spring_security_filterSecurityInterceptor_filterApplied”;//~实例字段//================================================================================================/* *   * securityMetadataSource中包含了一个HashMap,地图中保存了用户请求的Http.Method和相应的URL地址   *例如春天在引导中,可能是如下的配置,参考图1所示   * securityMetadataSource中的内容,参考图2所示   */私人FilterInvocationSecurityMetadataSource securityMetadataSource;   私人布尔observeOncePerRequest=true;//~方法//========================================================================================================/* *   *不习惯(我们依靠IoC容器生命周期服务来代替)   *   * @param arg0忽略   *   * @throws ServletException从不抛出   */公共空init (FilterConfig arg0)抛出ServletException {   }/* *   *不习惯(我们依靠IoC容器生命周期服务来代替)   */公共空间摧毁(){   }/* *   *方法,实际上是调用过滤器链。简单的代表   * {@link #调用(FilterInvocation)}的方法。   *   * @param请求的servlet请求   * @param响应servlet响应   * @param链过滤器链   *   * @throws IOException如果过滤器链失败   * @throws ServletException如果过滤器链失败   *   *   *通过责任链式调用,执行doFilter方法   * FilterInvocation中保存了滤波器相关的信息,比如请求、响应链   *通过调用方法处理具体的url过滤   */doFilter (ServletRequest公共无效请求,ServletResponse响应,   FilterChain链)抛出IOException ServletException {   FilterInvocation fi=new FilterInvocation(请求、响应链);   调用(fi);   }   公共FilterInvocationSecurityMetadataSource getSecurityMetadataSource () {   返回this.securityMetadataSource;   }   公共SecurityMetadataSource obtainSecurityMetadataSource () {   返回this.securityMetadataSource;   }   公共空间setSecurityMetadataSource (FilterInvocationSecurityMetadataSource新源){   这一点。securityMetadataSource=新源;   }   公共Class

Spring security用户URL权限FilterSecurityInterceptor使用解析