如何拒绝(已使用相同或不同用户)再次登录已经过身份验证的HTTP会话?
对于Form-Login,我找到了以下解决方法:
但是这些解决办法并不完美,因为我仍然可以访问login-processing-url
并执行第二次登录。对于没有登录页面的所有身份验证机制,例如HTTP Basic Authentication和Kerberos
我的Java配置:
@Configuration
@EnableWebSecurity
public static class MyWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").hasAuthority("ROLE_user")
.and()
.formLogin()
.loginProcessingUrl("/Login").permitAll()
.loginPage("/index.jsp").permitAll()
.defaultSuccessUrl("start.jsp")
.failureUrl("/index.jsp")
.and()
.httpBasic();
}
}
示例:
答案 0 :(得分:0)
将以下条目放入web.xml
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
并在您的spring安全配置中,使用以下代码段:
<http>
<session-management>
<concurrency-control max-sessions="1" expired-url="/redirect-page" />
</session-management>
</http>