Spring security 带有JDBCSessionManager和SpringWeb安全性的Jetty

Spring security 带有JDBCSessionManager和SpringWeb安全性的Jetty,spring-security,jetty,httpsession,Spring Security,Jetty,Httpsession,在我的应用程序中,我有一个嵌入式jetty服务器(版本8.1.2),运行一个使用SpringWebSecurity的web应用程序。 jetty服务器配置为使用JDBCSessionManager spring使用的安全过滤器之一是AbstractAuthenticationProcessingFilter的子类,其中有一个SessionAuthenticationStrategy,默认情况下是一个SessionFixationProtectionStrategy。此保护策略将创建一个新会话,作

在我的应用程序中,我有一个嵌入式jetty服务器(版本8.1.2),运行一个使用SpringWebSecurity的web应用程序。 jetty服务器配置为使用
JDBCSessionManager

spring使用的安全过滤器之一是
AbstractAuthenticationProcessingFilter
的子类,其中有一个
SessionAuthenticationStrategy
,默认情况下是一个
SessionFixationProtectionStrategy
。此保护策略将创建一个新会话,作为原始会话的副本,并使旧会话无效

现在,当我尝试登录到web应用程序时,我看到创建了一个新会话,但是添加到新会话的身份验证属性不会写回数据库。此外,我看到旧会话被写入数据库,并带有新属性,即使它已失效

最后,当新http请求作为新会话的一部分到达时,由于上述原因,它不会通过身份验证

经过一些调查,我发现这种行为在jetty的旧版本中没有发生(我尝试了7.1.4),并且我看到新的会话数据被写入数据库

我当然可以通过以下任何一种方法来解决这个问题:

  • 使用旧版本的jetty
  • 禁用会话固定保护策略
  • 使用默认的会话管理器,而不是
    JDBCSessionManager
但假设以上选项中没有一个对我有效,我想知道是否有解决这个问题的方法


谢谢

在jetty 8的较新版本中得到解决,至少8.1.6:)

在RT/jetty下的bugs.eclipse.org中写下问题的清晰描述,我们会解决它,但问题是什么还不清楚……您也可以尝试8.1.6(或8.1.7,不久将在central中发布),看看它是否仍然是一个问题,我们最近修复了一些会话错误谢谢。。。事实证明,该行为是
SessionHandler#doScope
finally
子句的一部分,正如您所建议的,该行为在8.1.6中确实得到了修复(可能更早,这是我检查的)