package com.sample; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(authorize -> authorize .requestMatchers("/login", "/login.html", "/sample/**").permitAll() .anyRequest().authenticated()) .formLogin(login -> login.loginPage("/login.html").permitAll() .loginProcessingUrl("/login").permitAll() .usernameParameter("id") .passwordParameter("password") .defaultSuccessUrl("/hello.html") .failureUrl("/login.html?failed")) .logout(logout -> logout .logoutUrl("/logout") .deleteCookies("JSESSIONID") .invalidateHttpSession(true) .logoutSuccessUrl("/login.html?logout")) .csrf(csrf -> csrf.ignoringRequestMatchers("/login", "/logout")); return http.build(); } @Bean public UserDetailsService userDetailsService() { return new InMemoryUserDetailsManager( User.withUsername("user") .password("{noop}password") .roles("USER") .build()); } }