【发布时间】:2016-06-16 19:56:13
【问题描述】:
我们正在将我们的应用程序从 SpringSecurity 3 迁移到 4。我们将 ConcurrentSessionControlStrategy bean 配置为始终创建会话(用于定义 bean 的 Grails 表示法)
sessionRegistry(SessionRegistryImpl)
sessionAuthenticationStrategy(ConcurrentSessionControlStrategy, sessionRegistry) {
alwaysCreateSession = true
}
因为我们使用来自 Excel 和其他应用程序的具有 基本身份验证 的 HTTP 请求与应用程序交互,如果没有该选项,则不会创建会话,并且必须为每个操作完成身份验证,而不是一次第一个动作。
在 Spring Security 4 中,ConcurrentSessionControlStrategy 已迁移到 ConcurrentSessionControlStrategy(根据迁移指南 - http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-xml.html),应该在 CompositeSessionAuthenticationStrategy 内部使用,但我们找不到设置会话策略的方法。
我们目前的解决方法是在认证之前调用非基本认证页面,是什么导致会话被创建,随后的请求将针对这个会话执行
【问题讨论】:
-
ConcurrentSessionControl和你所描述的是不同的东西。ConcurrentSessionControl表示同一用户一次允许多少个会话处于活动状态。您正在混合会话创建和并发控制......这些是完全不同的事情。 -
所以你的意思是
alwaysCreateSession不会影响基本身份验证的会话创建?设置此参数后,外部请求会创建会话,因此它为我们提供了所需的内容。除此之外,我们还控制每个用户允许的会话数,但根据迁移指南进行配置时,这在 4 中运行良好。 -
是的,它确实会影响会话创建,但它与
ConcurrentSessionControlStrategy无关。 -
感谢您的 cmets,他们帮助我找到了解决方案
标签: java spring grails spring-security