gpt4 book ai didi

grails - grails 4 sessionRegistry空

转载 作者:行者123 更新时间:2023-12-02 15:16:18 24 4
gpt4 key购买 nike

升级到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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com