Я использую Spring MVC с Spring Security ver4.0.1.RELEASE. Я пытался управлять одновременным входом пользователя в 1 и показывать сообщение об ошибке, если пользователь уже вошел в систему. Управление параллельным сеансом работает так, как ожидалось, но expireUrl ("") не работает. .formLogin(). LoginPage (""). FailUrl ("") всегда вызывается вместо expireUrl (""). Пожалуйста помоги.Параллельное управление сеансом всегда перенаправляется на failurl - Java Config
Ниже мой SpringSecurityConfiguration.java, который проходит WebSecurityConfigurerAdapter
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/resources/**").permitAll()
.antMatchers("/", "/home").permitAll()
.antMatchers("/Access_Denied").permitAll()
.antMatchers("/login").permitAll()
.and().formLogin().loginPage("/login")
.failureUrl("/login?out=1")
.usernameParameter("userID").passwordParameter("password")
.and().csrf().and()
.logout()
.deleteCookies("JSESSIONID")
.logoutSuccessUrl("/logout")
.invalidateHttpSession(true)
.and().exceptionHandling().accessDeniedPage("/accessDenied.jsp")
.and()
.sessionManagement()
.maximumSessions(1)
expiredUrl("/login?time=1")
.sessionRegistry(sessionRegistry);
}
Мой Initializer класс выглядит, как показано ниже -
protected Filter[] getServletFilters() {
return new Filter[] { new HiddenHttpMethodFilter() };
}
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new SessionListener());
servletContext.addListener(new CustomHttpSessionEventPublisher());
}
Приведенные ниже ссылки предоставляют дополнительную информацию для данного типа конфигурации безопасности -
http://codehustler.org/blog/spring-security-tutorial-form-login-java-config/ https://gerrydevstory.com/2015/08/02/managing-spring-security-user-session/
Спасибо за ваш ответ Wermerb. FormLoging() не определен для управления сеансом, и, следовательно, это невозможно :) – dkumar