grails - grails 4 sessionRegistry空

标签 grails spring-security grails-4

升级到grails 4,sessionRegistry.getAllPrincipal()始终为空。

resources.groovy中的原始 Spring Bean 是

sessionRegistry(SessionRegistryImpl)
concurrentSessionFilter(ConcurrentSessionFilter){
    sessionRegistry = sessionRegistry
    expiredUrl = '/login'
}

由于这不再起作用,我尝试将resources.groovy更新为
sessionRegistry(SessionRegistryImpl) 
registerSessionAuthenticationStrategy(RegisterSessionAuthenticationStrategy, ref(sessionRegistry))
sessionFixationProtectionStrategy(SessionFixationProtectionStrategy)
concurrentSessionControlAuthenticationStrategy(ConcurrentSessionControlAuthenticationStrategy, ref(sessionRegistry)){
    maximumSessions=1
    exceptionIfMaximumExceeded=true
}
compositeSessionAuthenticationStrategy(CompositeSessionAuthenticationStrategy,
    [ref(registerSessionAuthenticationStrategy),ref(sessionFixationProtectionStrategy),ref(concurrentSessionControlAuthenticationStrategy)])

所有这些bean都来自org.springframework.security.web.authentication.session包。

我也为grails.plugin.springsecurity.providerNames添加了名称

DaoAuthenticationProvider由自定义身份验证提供程序扩展。登录和注销工作正常,但主体永远不会在升级的应用程序中注册。我是否需要手动注册它们(sessionRegistry.registerNewSession())?

有旧的答案说要使用grails install-templates,然后在src / templates / war中编辑web.xml。但是在grails 4中,安装模板未生成war / web.xml

我尝试将其添加到/WEB-INF/web.xml,但还是没有运气。

最佳答案

我认为您缺少sessionAuthenticationStragegy bean定义,请尝试删除CompositeSessionAuthenticationStrategy行并将其替换为:
sessionAuthenticationStrategy(CompositeSessionAuthenticationStrategy, [ref('concurrentSessionControlAuthenticationStrategy'), ref('sessionFixationProtectionStrategy'), ref('registerSessionAuthenticationStrategy')])
这是我看到的与Grails 4兼容的代码和我的代码之间的唯一区别。

关于grails - grails 4 sessionRegistry空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949697/

相关文章:

chalice 4 : Micronaut fails with NoClassDefFoundError: javax/annotation/PreDestroy

grails - Grails 3调用外部方法

grails - 尝试从非域对象的数据呈现gsp HTML响应

Spring 安全身份验证提供程序 java 配置

java - grails 4.x : Creating a WAR with a custom env always runs under development

gradle - Grails 4新鲜插件无法解决Gradle依赖关系

grails - 在tomcat 6.0.28上部署应用程序时出现问题

grails - 将应用程序从 Grails 2.2.5 升级到 3.0

java - 如何在 spring security 中取消 cookie?

java - 具有可变 URL 用户 ID 的 antMatchers Spring Security 模式