跳到主要内容

07、HttpSecurity

到目前为止我们的 SecurityConfig 只包含了关于如何验证我们的用户的信息。Spring Security怎么知道我们想对所有的用户进行验证?Spring Security怎么知道我们需要支持基于表单的验证?原因是WebSecurityConfigurerAdapterconfigure(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这样帮助我们避免信息泄露。比如: