package org.baeldung.spring; import org.baeldung.security.MySimpleUrlAuthenticationSuccessHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.session.HttpSessionEventPublisher; @Configuration // @ImportResource({ "classpath:webSecurityConfig.xml" }) @EnableWebSecurity public class SecSecurityConfig extends WebSecurityConfigurerAdapter { public SecSecurityConfig() { super(); } @Override protected void configure(final AuthenticationManagerBuilder auth) throws Exception { // @formatter:off auth.inMemoryAuthentication() .withUser("user1").password("user1Pass").roles("USER") .and() .withUser("admin1").password("admin1Pass").roles("ADMIN"); // @formatter:on } @Override protected void configure(final HttpSecurity http) throws Exception { // @formatter:off http .csrf().disable() .authorizeRequests() .antMatchers("/anonymous*").anonymous() .antMatchers("/login*").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login.html") .loginProcessingUrl("/login") .successHandler(successHandler()) .failureUrl("/login.html?error=true") .and() .logout().deleteCookies("JSESSIONID") .and() .rememberMe().key("uniqueAndSecret").tokenValiditySeconds(86400) .and() .sessionManagement().invalidSessionUrl("/invalidSession.html").maximumSessions(2).expiredUrl("/sessionExpired.html"); // @formatter:on } private AuthenticationSuccessHandler successHandler() { return new MySimpleUrlAuthenticationSuccessHandler(); } @Bean public HttpSessionEventPublisher httpSessionEventPublisher() { return new HttpSessionEventPublisher(); } }