【发布时间】:2016-10-16 00:51:39
【问题描述】:
我已经配置了 Apache shiro,它在我的应用程序中运行良好。
现在我需要为每个用户配置最大会话数,这意味着一个用户无法登录另一台机器,或者如果他尝试登录,它应该使之前的会话无效,或者他可能无法使用新会话登录。
在单个时间点,应该只有一个用户会话。
LoginServlet
UsernamePasswordToken token = new UsernamePasswordToken(username , password);
org.apache.shiro.subject.Subject subject = SecurityUtils.getSubject();
subject.login(token);
loginSuccessful = true;
token.clear();
配置 xml
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="cacheManager" ref="shiroCacheManager" />
<property name="realm" ref="myRealm" />
</bean>
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
<bean id="shiroCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
</bean>
<bean id="myRealm" class="com.mypackage.service.shiro.RoleSecurityJdbcRealm">
<property name="dataSource" ref="shiroDatasource" />
<property name="permissionsLookupEnabled" value="true"></property>
</bean>
【问题讨论】:
标签: java authentication shiro