每个用户一个会话 spring security 3.2

Posted

技术标签:

【中文标题】每个用户一个会话 spring security 3.2【英文标题】:one session per user spring security 3.2 【发布时间】:2015-12-26 03:32:08 【问题描述】:

我想限制每个用户一个会话,然后我按照接下来的步骤操作。 web.xml

<listener>
<listener-class>
  org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
<listener>
<listener-class>
        org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<filter>
 <filter-name>springSecurityFilterChain</filter-name>
 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
 <filter-name>springSecurityFilterChain</filter-name>
 <url-pattern>/*</url-pattern>
 <dispatcher>FORWARD</dispatcher>
 <dispatcher>REQUEST</dispatcher>
</filter-mapping>

spring-security.xml

<sec:session-management invalid-session-url="/pages/comun/index.xhtml"
        session-fixation-protection="none">
        <sec:concurrency-control max-sessions="1"
            expired-url="/pages/comun/index.xhtml" error-if-maximum-exceeded="true"/>
    </sec:session-management>

做不到,有人帮我欣赏一下

【问题讨论】:

【参考方案1】:

我在您的web.xml 中看不到HttpSessionEventPublisher

<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>

这会将会话数据添加到由您的spring-security.xml 创建的SessionRegistry

【讨论】:

以上是关于每个用户一个会话 spring security 3.2的主要内容,如果未能解决你的问题,请参考以下文章

在tomcat上的grails spring security中登录用户的会话

Spring security-无限用户会话超时与IDP

使用 Spring Security 进行会话管理

springCloud-依赖Spring Security使用 JWT实现无状态的分布式会话

具有会话获取在线用户的 Spring Security 返回空

spring boot整合 spring security之会话管理