Java 如何获取Spring Security SessionRegistry?

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

我似乎找不到如何在Struts操作中获取对Spring Security(V3)SessionRegistry的引用

我已在web.xml文件中配置了侦听器:

<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很有用:

  • 会话注册表别名。
  • session-registry-ref.
  • 官方文件中每个属性的描述:

    会话注册表别名。 参考内部会话也很有用 在您自己的bean或管理接口中使用的注册表。你可以 使用会话注册表别名属性公开内部bean, 给它一个可以在配置的其他地方使用的名称

    会话注册表ref。 用户可以使用 会话注册表ref属性。另一个并发会话控制 豆子将被连接起来使用它


    谢谢你的链接。我将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>