Spring bootでSpring Securityを統合した後のCSS静的リソースブロックの問題

1716 ワード

問題の説明


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の下にフォルダを新規作成し、上記の方法でブロックをスキップするファイルパスを指定すればよい.