9.3 拦截请求
对每个请求进行细粒度安全性控制的关键在于重载configure(HttpSecurity) 方法。如下代码中的重载configure,为不同的URL路径有选择性的应用安全性
@Override
protected void configure(HttpSecurity http) throws Exception{
http.authorizeRequests()
.antMatchers("/test1").authenticated() //对路径认证
.antMatchers(HttpMethod.POST,"/test2").authenticated() //对路径的POST请求认证
.anyRequest().permitAll(); //方通其他路径请求,不需要认证和任何的权限
}
除了路径选择,还可以通过authenticated() 和 permitAll() 来定义该如何保护路径。authenticated()要求在执行该请求时,必须已经登录了应用。如果用户没有认证的话,Spring Security的Filter将会捕获该请求,并将用户重定向到应用的登录界面。
其他的用来定义如何保护请求的方法
方法 | 能够做什么 |
---|---|
access(String) | 如果给定的SpEL表达式计算结果为true,就允许访问 |
anonymous() | 允许匿名访问 |
authenticated() | 允许认证过的用户访问 |
denyAll() | 无条件拒绝访问 |
fullyAuthenticated() | 如果用户是完整认证的话(不是通过Remember-me功能认证的),就允许访问 |
hasAnyAuthority(String…) | 如果用户具备给定权限的某一个的话,就允许访问 |
hashAnyRole(String…) | 如果用户具备给定角色的某一个的话,就允许访问 |
hashAuthority(String) | 如果用户具备给定权限的话,就允许访问 |
hasIpAddress(String) | 如果请求来自给定IP地址的话,就允许访问 |
hasRole(String) | 如果用户具备给定角色的话,就允许访问 |
not() | 对其他访问方法的结果求反 |
permitAll( |