Spring Security静态资源过滤(11)

打印 上一主题 下一主题

主题 787|帖子 787|积分 2371

  在一个实际项目中,并非所有的请求都需要经过Spring Security过滤器,有一些特殊的请求,例如静态资源等,一般来说并不需要经过Spring Security过滤器链,用户如果访问这些静态资源,直接返回对应的资源即可。
  回顾关于WebSecurity的讲解,提到它里边维护了一个ignoredRequests变量, 该变量,记录的就是所有需要被忽略的请求,这些被忽略的请求将不再经过Spring Security过滤器。例如,静态资源目录结构如图4-10所示。
  
图 4-10
现在这些静态资源的访问不需要经过Spring Security过滤器,具体配置方案如下:
  1. public class SecurityConfig extends WebSecurityConfigurerAdapter{
  2.     @Override
  3.     public void configure(WebSecurity web) throws Exception {
  4.         web.ignoring().antMatchers("/mylogin.html","/loginNew.html");
  5.     }
  6.     @Override
  7.     protected void configure(HttpSecurity http) throws Exception {
  8.         http.authorizeRequests()
  9.             .anyRequest().authenticated()
  10.             .and()
  11.             .formLogin()
  12.             .and()
  13.             .csrf().disable();
  14.     }
  15. }
复制代码
   重写configure(WebSecurity)方法,并配置需要忽略的请求,这些需要忽略的地址,最终都会被添加到ignoredRequests集合中,并最终以过滤器链的形式呈现出来。换句话说,上面的配置中一共包含了五个过滤器链:configure( W eb Security)方法中配置的四个以及HttpSecurity 中配置的一个(即/**)。如果大家不能理解为什么会有五个过滤器链,可以回顾关于WebSecurity的分析以及关于FilterChainProxy的分析,这里不再赘述。
  配置完成后,再次启动项目,此时不需要认证就可以访问/login.html页面。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表