Spring boot+Spring Security CSS静的リソースブロックの問題
問題の説明
Spring boot+Spring Securityを使用して統合した場合、Spring Securityはログインに応答する処理を行いましたが、ログインページに入るとページエラーが発生し、ページレイアウトがすべて乱れているという問題があり、CSSやJSなどの静的ファイルがロードされていないことが原因で確認されました
問題の原因
Spring Securityのデフォルトでは静的ファイルがブロックされています.この問題はSpring MVCでも発生しています.Spring MVCの解決策は、プロファイルに静的リソースの参照構成を追加することですが、Spring boot+Spring Security統合ではフル注釈方式が採用されており、プロファイルはありません.そのため、以下の変更が必要です.
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true) // security
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Bean
@Override
protected AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// "/" "/home"
http.authorizeRequests()
.antMatchers("/home").permitAll()
//
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login") // "/login"
.defaultSuccessUrl("/list") // "list"
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/home") // url "/home"
.permitAll();
}
@Override
public void configure(WebSecurity web) throws Exception {
//
web.ignoring().antMatchers("/global/**");
}
}
Spring bootのデフォルトの静的リソース配置場所はresource/staticの下にあり、staticの下にフォルダを新規作成し、上記の方法でブロックをスキップするファイルパスを指定すればよい.