本文内容来自王松老师的《深入浅出Spring Security》,自己在学习的时候为了加深理解顺手抄录的,有时候还会写一些自己的想法。
在手机项目中,并非所有的请求都需要经过Spring Security过滤器链。有一些特殊请求,例如静态资源并不需要经过Spring Security过滤器链,用户的如果要访问这些静态资源,直接访问对应资源即可。
其实WebSecurity对象维护这一个ignoredRequests的变量,该变量记录的就是需要被忽略的请求,这些被忽略的请求将不在经过Spring Security过滤器。例如下图的静态资源:
现在这些静态资源访问可以不需要经过Spring Security过滤器,具体的配置方案如下:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.csrf().disable();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/login.html","/css/**","/js/**","/images/**");
}
重写WebSecurityConfigurerAdapter的configure(WebSecurity web)方法,配置需要忽略的请,这些请求会被最终会被添加到ignoredRequests的集合中,并最终通过过滤器链的形式呈现出来。换句话说,上面的配置中一共包括了五个过滤器链:configure(WebSecurity web)方法中四个以及HttpSecurity 中配置了一个(即 /** )。
配置完成后,启动项目,此时不需要认证就可以访问/login.html页面了。