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) | 如果用户 |

本文深入探讨Spring Security的请求拦截,详细介绍了如何通过SpringEL进行安全保护,强制通道的安全性以及防止跨站请求伪造。同时,文章还涵盖了用户认证的各个方面,包括自定义登录页、HTTP Basic认证、Remember-me功能以及退出机制,全面讲解了如何保护Web应用视图。
最低0.47元/天 解锁文章
6922

被折叠的 条评论
为什么被折叠?



