新的 Spring Security 登录会话启动时是不是启动了新的 JSF 会话?
Posted
技术标签:
【中文标题】新的 Spring Security 登录会话启动时是不是启动了新的 JSF 会话?【英文标题】:Is a new JSF session started when a new Spring Security login session starts?新的 Spring Security 登录会话启动时是否启动了新的 JSF 会话? 【发布时间】:2015-08-22 18:57:48 【问题描述】:我在 Mojarra 2.1.29、Tomcat 7 和 Spring security 2.0 中。我对会话的概念有点困惑。众所周知,会话范围内的托管 bean 在每个会话中创建一次。我的问题是春季安全会话是否与 JSF 会话相同,或者它们以不同的方式运行?
例如,我们正在发送来自已授权用户的登录请求。会议会发生什么。
我想,我们开始一个新的 Spring 安全会话。但是是否也将启动一个新的 JSF 会话?
【问题讨论】:
【参考方案1】:spring-security session 和 jsf session 都从 servlet 容器绑定到 http session。在 spring-security 中,您可以使用 session-fixation 进行配置,在这种情况下会创建一个新的 http 会话。 @见http://docs.spring.io/spring-security/site/docs/4.0.1.RELEASE/reference/htmlsingle/#ns-session-fixation @见http://docs.spring.io/spring-security/site/docs/4.0.1.RELEASE/reference/htmlsingle/#sessionauthenticationstrategy
JSF 本身也将会话范围的托管 bean 存储为 HttpSession 的一个属性。
默认情况下 spring-security 有“迁移”会话。在这种情况下,jsf 会话将继续。设置“newSession”时,将在没有当前 jsf 会话的情况下创建一个干净的会话。
【讨论】:
如果你提供一些参考,我会给你+1 ;-)以上是关于新的 Spring Security 登录会话启动时是不是启动了新的 JSF 会话?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 在新的应用程序启动时重定向到 invalid-session-url
Spring Security、Spring MVC 和登录会话
重启后 Spring Security 仍然经过身份验证(但没有会话)
Grails Spring Security - 会话超时后重新登录时重新加载会话变量