Java 如何获取Spring Security SessionRegistry?
我似乎找不到如何在Struts操作中获取对Spring Security(V3)SessionRegistry的引用 我已在web.xml文件中配置了侦听器:Java 如何获取Spring Security SessionRegistry?,java,session,spring-security,struts2,Java,Session,Spring Security,Struts2,我似乎找不到如何在Struts操作中获取对Spring Security(V3)SessionRegistry的引用 我已在web.xml文件中配置了侦听器: <listener> <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> </listener> http配置如下所示: &l
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
http配置如下所示:
<session-management invalid-session-url="/public/login.do?login_error=expired"
session-authentication-error-url="/public/login.do"
session-fixation-protection="newSession">
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</session-management>
一般来说,我自己更愿意连接Springbean,但不确定如何使用名称空间公开它。每次执行操作时,会话注册表都为空
有人能指出我在这里做错了什么,或者给我示范一个例子吗
提前感谢您的回复 不确定您是否参考了Spring安全参考文档中的部分。它有一个结合了名称空间和自定义bean的代码段。如果您是按名称空间配置Spring Security,那么并发控制标记的以下属性对于访问SystemRegistry很有用:
谢谢你的链接。我将sessionRegistry bean添加到我的Spring配置中,在Struts操作中它不再为null。但是,当我尝试获取登录用户(登录时)的值sessionRegistry.getAllPrincipals().size()时;始终为0。我读的文件对吗?似乎如果我使用的是自定义登录表单(我正在使用LDAP进行身份验证),我就不能使用上面指定的名称空间/自动配置会话管理。似乎我必须手动配置所有会话管理和并发控制?查看在线文档,我似乎无法确定myAuthFilter的身份验证提供商的名称。我使用的名称空间不提供bean id。。。有点死记硬背,但是
getAllPrinciples().size()
总是为我返回零。你是怎么做到的?您是否有自己的SessionRegistry
实现类?
<session-management invalid-session-url="/public/login.do?login_error=expired"
session-authentication-error-url="/public/login.do"
session-fixation-protection="newSession">
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</session-management>