新会话的Spring安全创建

Posted

技术标签:

【中文标题】新会话的Spring安全创建【英文标题】:Spring security creation of new session 【发布时间】:2015-08-31 04:08:34 【问题描述】:

我正在使用弹簧安全性。 我有这种情况:

    创建 2 个用户 在用户 1 的会话到期之前使用第一个登录并使用第二个再次登录

正确的行为是将第一个会话设置为过期并创建一个新会话。

哪个 Spring Security 部分负责新会话的到期和创建?成功处理程序/身份验证提供程序?

【问题讨论】:

【参考方案1】:

我想这就是您要查找的内容,如果不是,请告诉我,我将删除我的答案。你需要一些东西来管理会话。我有这种方式的 XML 代码。

  <security:session-management session-fixation-protection="migrateSession">
         <security:concurrency-control session-registry-ref="sessionRegistry" max-sessions="1" expired-url="/login"/>
     </security:session-management>

还有下面的 sessionRegistry 类:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter 


    @Override
    protected void configure(final HttpSecurity http) throws Exception 
        http.sessionManagement().maximumSessions(-1).sessionRegistry(sessionRegistry());
    

    @Bean
    public SessionRegistry sessionRegistry() 
        return new SessionRegistryImpl();
    


您可以使用 newSession 代替 migrateSession,这样旧的会话将自动过期并创建一个新的会话。

【讨论】:

以上是关于新会话的Spring安全创建的主要内容,如果未能解决你的问题,请参考以下文章

LR12.53—第2课:准备脚本重播

访问登录页面时创建的会话过多?

httpservletrequest - 创建新会话/更改会话 ID

会话固定 - 登录后删除会话并创建新会话 - 但用户不再登录

paramiko不能通过cd改变路径分析

Appium 错误:无法创建新会话。 (原始错误:没有从 Chromedriver 获得会话重定向)