拦截请求
对每个请求进行细粒度安全性控制的关键在于重载 configure(HttpSecurity) 方法。如下的代码片段展现了重载的 configure(HttpSecurity) 方法,它为不同的 URL 路径有选择地应用安全性:
在这里,我们首先调用 authorizeRequests(),然后调用该方法所返回的对象的方法来配置请求级别的安全性细节。其中,
第一次调用 antMatchers() 指定了对 /spitters/me 路径的请求需要进行认证。
第二次调用 antMatchers() 更为具体,说明对 /spittles 路径的 HTTP POST 请求必须要经过认证。
最后对 anyRequests() 的调用中,说明其他所有的请求都是允许的,不需要认证和任何的权限。
antMatchers() 方法中设定的路径支持 Ant 风格的通配符。如下所示:
也可以在一个对 antMatchers() 方法的调用中指定多个路径:
用来定义如何保护路径的配置方法:
方法 | 能够做什么 |
---|---|
access(String) | 如果给定的 SpEL 表达式计算结果为 true,就允许访问 |
anonymous() | 允许匿名用户访问 authenticated() 允许认证过的用户访问 |
denyAll() | 无条件拒绝所有访问 |
fullyAuthenticated() | 如果用户是完整认证的话(不是通过Remember-me 功能认证的),就允许访问 |
hasAnyAuthority(String...) | 如果用户具备给定权限中的某一个的话,就允许访问 |
hasAnyRole(String...) | 如果用户具备给定角色中的某一个的话,就允许访问 |
hasAuthority(String) | 如果用户具备给定权限的话,就允许访问 |
hasIpAddress(String) | 如果请求来自给定 IP 地址的话,就允许访问 |
hasRole(String) | 如果用户具备给定角色的话,就允许访问 |
not() | 对其他访问方法的结果求反 |
permitAll() | 无条件允许访问 |
rememberMe() | 如果用户是通过 Remember-me 功能认证的,就允许访问 |
Last updated