Closed1

【Java】spring securityを導入したらcssやjsが読み込めない

やむ | serinaやむ | serina

対処法

securityFilterChainメソッドで、cssやjsのディレクトリを認証不要に設定する。

.requestMatchers("/css/**", "/js/**", "/images/**", "/login", "/signup")
SecurityConfig.java(該当メソッドのみ抜粋)
@Configuration
@EnableWebSecurity
public class SecurityConfig {

	@Bean
	public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
		http
				// カスタム認証プロバイダを設定
				.authenticationProvider(customAuthenticationProvider)
				// CORSの設定を適用
				.cors(customizer -> customizer.configurationSource(corsConfigurationSource()))
				// CSRFの保護を無効にする
				.csrf(csrf -> csrf.disable())
				// アクセス制御の設定
				.authorizeHttpRequests(authorizeRequests -> authorizeRequests
						.requestMatchers("/css/**", "/js/**", "/images/**", "/login", "/signup")
						.permitAll() // ログインページ、新規登録ページ、OAuth2エンドポイントは認証なしでアクセス可能
						.anyRequest().authenticated())
				.formLogin(formLogin -> formLogin
						.loginPage("/login") // ログインページのURL
						.defaultSuccessUrl("/login/success")
						.failureHandler(authenticationFailureHandler())
						.permitAll())
				.oauth2Login(oauth2Login -> oauth2Login
						.loginPage("/login") // ログインページのURL
						.defaultSuccessUrl("/login/success") // ログイン成功後のリダイレクト先
				)
				.logout(logout -> logout
						.logoutUrl("/logout")
						.logoutSuccessUrl("/login")
						.invalidateHttpSession(true)
						.deleteCookies("JSESSIONID"))
				.csrf(csrf -> csrf.disable()); // CSRF保護を無効化

		return http.build();
	}
}

参考

https://zenn.dev/kktworks/books/spring_security_6_sample_book/viewer/ss6s_3

このスクラップは2024/02/27にクローズされました