繼承類可以實作安全配置,其中常用的配置内容是
WebSecurityConfigurerAdapter
與
HttpSecurity
WebSecurity
HttpSecurity的配置
代碼實作
- 繼承
,重寫WebSecurityConfigurerAdapter
方法configure(HttpSecurity)
- 執行個體代碼
@Override
protected void configure(HttpSecurity http) throws Exception {
// TODO...
}
代碼分析
- 檢視方法基類預設實作,當沒有重寫該方法時,此預設配置則會生效
protected void configure(HttpSecurity http) throws Exception {
this.logger.debug("Using default configure(HttpSecurity). "
+ "If subclassed this will potentially override subclass configure(HttpSecurity).");
http.authorizeRequests((requests) -> requests.anyRequest().authenticated()); // 任何請求都會進行認證
http.formLogin(); // 啟用内建的登入頁面m
http.httpBasic(); // 使用HTTP Basic Auth進行認證
}
- 如果希望啟用Security的調試功能且輸出日志,則可以給
的@EnableWebSecurity
參數啟用。【預設不啟用】(debug=true)
[3天速成Spring Security] - 04 Spring Security安全配置簡介HttpSecurity的配置WebSecurity的配置 - 啟用後則每當有API通路時都可以在控制台看到完整的請求内容【請求資訊,參與的Filter Chain】
[3天速成Spring Security] - 04 Spring Security安全配置簡介HttpSecurity的配置WebSecurity的配置
配置Security使用者名及密碼
- 在application.properties中配置登入使用者名,密碼及角色
spring.security.user.name=jack
spring.security.user.password=12345678
spring.security.user.roles=USER,ADMIN
- 配置後,Spring Security就不會再為我們生成随機密碼了
WebSecurity的配置
代碼實作
- 繼承
,重寫WebSecurityConfigurerAdapter
方法configure(WebSecurity)
- 執行個體代碼
@Override
public void configure(WebSecurity web) throws Exception {
// TODO...
}
- 與HttpSecurity的差別
- 任何請求進入HttpSecurity configure的方法時都會啟動過濾器鍊,但是啟動過濾器鍊是很昂貴的操作,有時候并不期待經過過濾器鍊。當我們希望有的API不經過過濾器鍊的處理就允許或拒絕時,則需要在HttpSecurity的configure方法中實作。
代碼分析
- 當希望test開頭的API請求不通過過濾器鍊時可以通過如下配置
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().mvcMatchers("/test/**");
}
- 當使用者通路
開頭的API時,則會直接放行,不會經過過濾器鍊進行安全檢查。通常作用于靜态檔案的路徑等等…/test/