Spring Security 的两种资源放行的策略
在Spring Security 中有两种资源放行的策略
若是你但愿用户不用登陆就能访问,那么通常来讲,有两种配置策略:java
第一种就是在 configure(WebSecurity web) 方法中配置放行,像下面这样:web
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/css/**", "/js/**", "/index.html", "/img/**", "/fonts/**", "/favicon.ico", "/verifyCode");
}
第二种方式是在 configure(HttpSecurity http) 方法中进行配置:spring
http.authorizeRequests()
.antMatchers("/hello").permitAll()
.anyRequest().authenticated()
两种方式最大的区别在于,第一种方式是不走 Spring Security 过滤器链,而第二种方式走 Spring Security 过滤器链,在过滤器链中,给请求放行。
有的资源可使用第一种方式额外放行,不须要验证,例如前端页面的静态资源,就能够按照第一种方式配置放行。
有的资源放行,则必须使用第二种方式,例如登陆接口。你们知道,登陆接口也是必需要暴露出来的,不须要登陆就能访问到的,可是咱们却不能将登陆接口用第一种方式暴露出来,登陆请求必需要走 Spring Security 过滤器链,由于在这个过程当中,还有其余事情要作。