到目前为止我们的 SecurityConfig 只包含了关于如何验证我们的用户的信息。Spring Security怎么知道我们想对所有的用户进行验证?Spring Security怎么知道我们需要支持基于表单的验证?原因是WebSecurityConfigurerAdapter
在 configure(HttpSecurity http)
方法提供了一个默认的配置,看起来和下面类似:
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
上面的默认配置:
- 确保我们应用中的所有请求都需要用户被认证
- 允许用户进行基于表单的认证
- 允许用户使用HTTP基本验证进行认证
你可以看到这个配置和下面的XML命名配置相似:
<http>
<intercept-url pattern="/**" access="authenticated"/>
<form-login />
<http-basic />
</http>
Java配置使用and()方法相当于XML标签的关闭,这样允许我们继续配置父类节点。如果你阅读代码他很合理,我想配置请求验证,并使用表单和HTTP基本身份验证进行登录。
然而,Java配置有不同的默认URL和参数,当你自定义用户登录页时需要牢记这一点。让我们的URL更加RESTful ,另外不要那么明显的观察出我们在使用Spring Security这样帮助我们避免信息泄露。比如: