Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法在Spring Security 4中使用ConcurrentSessionControlStrategy.alwaysCreateSession?_Java_Spring_Grails_Spring Security - Fatal编程技术网

Java 有没有办法在Spring Security 4中使用ConcurrentSessionControlStrategy.alwaysCreateSession?

Java 有没有办法在Spring Security 4中使用ConcurrentSessionControlStrategy.alwaysCreateSession?,java,spring,grails,spring-security,Java,Spring,Grails,Spring Security,我们正在将应用程序从SpringSecurity 3迁移到4。我们将ConcurrentSessionControlStrategy bean配置为始终创建会话(定义bean的Grails符号) 因为我们使用的HTTP请求带有来自Excel和其他应用程序的基本身份验证,与应用程序交互,如果没有该选项,则不会创建会话,并且必须对每个操作进行身份验证,而不是对第一个操作进行一次身份验证 在Spring Security 4中,ConcurrentSessionControlStrategy被迁移到了

我们正在将应用程序从SpringSecurity 3迁移到4。我们将ConcurrentSessionControlStrategy bean配置为始终创建会话(定义bean的Grails符号)

因为我们使用的HTTP请求带有来自Excel和其他应用程序的基本身份验证,与应用程序交互,如果没有该选项,则不会创建会话,并且必须对每个操作进行身份验证,而不是对第一个操作进行一次身份验证


在Spring Security 4中,ConcurrentSessionControlStrategy被迁移到了
ConcurrentSessionControlStrategy
(根据迁移指南-),应该在
CompositeSessionAuthenticationStrategy
中使用,但我们找不到设置会话策略的方法


我们目前的解决方法是在身份验证之前调用非基本身份验证页面,是什么导致会话被创建,并针对该会话执行以下请求呢?

来自M.Deinum的评论将我引向了另一个方向,我发现在Grails
securityContextPersistenceFilter
spring security core
插件中定义了
ForceAgentSessionCreation=false
。覆盖这个bean以强制创建急切的会话就成功了

securityContextPersistenceFilter(SecurityContextPersistenceFilter, ref('securityContextRepository')) {
    forceEagerSessionCreation = true
}
这可能也可以通过配置GrailsSpringSecurity核心来实现

源代码可在以下位置获得:
ConcurrentSessionControl
和您描述的是不同的东西。
ConcurrentSessionControl
用于显示同一用户一次可以激活多少个会话。您正在混合会话创建和并发控制。。。这些是完全不同的事情。所以你的观点是,
alwaysCreateSession
不会影响基本身份验证上的会话创建?设置此参数后,外部请求将创建会话,以便它提供我们所需的内容。除此之外,我们还可以控制每个用户允许的会话数,但根据迁移指南进行配置时,这在4中效果很好。是的,它确实会影响会话创建,但与
ConcurrentSessionControl策略
无关。感谢您的评论,这些评论帮助我找到了解决方案
securityContextPersistenceFilter(SecurityContextPersistenceFilter, ref('securityContextRepository')) {
    forceEagerSessionCreation = true
}