Я настроил Apache shiro, и он отлично работает с моим приложением.Максимальные сеансы пользователя для каждого пользователя - 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>
я постараюсь как предложил вам –
'getActiveSessions()' защищен внутри 'DefaultSessionManager', как это сделать .. ?? –
Я использую 'DefaultWebSecurityManager' –