shrio限制并发人数与剔除
1.定义过滤器KickoutSessionControlFilter
建一个KickoutSessionControlFilter.java文件
设置5个参数:
kickoutUrl:踢出后到的地址
boolean kickoutAfter:false:踢出之前登录的;true:之后登录的用户
maxSession:同一个帐号最大会话数 默认1
sessionManager;
cacheManager;
2.配置shrio.xml文件
<property name="filters">
<map>
<entry key="kickout" value-ref="kickoutSessionControlFilter"/>
</map>
</property>
<bean id="kickoutSessionControlFilter" class="com.agood.bejavagod.controller.filter.KickoutSessionControlFilter">
<property name="cacheManager" ref="shiroEhcacheManager"/>
<property name="sessionManager" ref="sessionManager"/>
<!-- 是否踢出后来登录的,默认是false;即后者登录的用户踢出前者登录的用户 -->
<property name="kickoutAfter" value="false"/>
<!-- 同一个用户最大的会话数,默认1;比如2的意思是同一个用户允许最多同时两个人登录 -->
<property name="maxSession" value="1"/>
<property name="kickoutUrl" value="/login.action"/>
</bean>
3.修改过滤器配置,拦截所有请求
shrio.xml文件中
/** = kickout,authc