默認繼承了WebSecurityConfigurerAdapter之后,再加上幾行代碼搜变,我們就能實現(xiàn)以下的功能:
- 1、要求用戶在進入你的應用的任何URL之前都進行驗證
- 2仰担、創(chuàng)建一個用戶名是“user”绩社,密碼是“password”赂苗,角色是“ROLE_USER”的用戶
- 3、啟用HTTP Basic和基于表單的驗證
- 4朴沿、Spring Security將會自動生成一個登陸頁面和登出成功頁面
這樣他就提供基于web的security, 安全服務配置URL強制攔截保護服務败砂,可以配置哪些路徑不需要保護,哪些需要保護昌犹,它與ResourceServerConfigurerAdapter區(qū)別在于:
WebSecurityConfigurerAdapter是默認情況下spring security的http配置斜姥,
ResourceServerConfigurerAdapter是默認情況下spring security oauth2的http配置ResourceServerConfigurerAdapter被配置為不同的端點(參見antMatchers),而WebSecurityConfigurerAdapter不是铸敏。
RealServServer配置適配器使用一個特殊的過濾器來檢查請求中的承載令牌杈笔,以便通過OAuth2對請求進行認證。而WebSecurityConfigurerAdapter適配器用于通過會話對用戶進行身份驗證(如表單登錄)
WebSecurityConfigurerAdapter部分源碼如下:
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
...
}
public void configure(WebSecurity web) throws Exception {
}
protected void configure(HttpSecurity http) throws Exception {
...
}
...
}
ResourceServerConfigurerAdapter部分源碼如下:
public class ResourceServerConfigurerAdapter implements ResourceServerConfigurer {
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated();
}
}
在ResourceServerProperties中球榆,定義了它的order默認值為SecurityProperties.ACCESS_OVERRIDE_ORDER - 1;店量,是大于100的,即WebSecurityConfigurerAdapter的配置的攔截要優(yōu)先于ResourceServerConfigurerAdapter,優(yōu)先級高的http配置是可以覆蓋優(yōu)先級低的配置的右钾。
某些情況下如果需要ResourceServerConfigurerAdapter的攔截優(yōu)先于WebSecurityConfigurerAdapter需要在配置文件中添加
security.oauth2.resource.filter-order=99
或者重寫WebSecurityConfigurerAdapter的Order配置,如下:
@Configuration
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
...
}