禁止重复登陆,就是同一个账号在不同的浏览器,不同的设备登陆的时候只会有一个登陆成功,其他的都会被挤下去。
就像,我登的我的账号,这个时候你再来登我的账号,我就被挤下去了。
本文将介绍如何使用shiro禁止重复登陆。
每一个登陆用户登陆后都会存在于 shiro 的一个 session里面。当然,这里我们需要设置,登陆成功后
Session session = SecurityUtils.getSubject().getSession();
session.setAttribute("USER_SESSION", user);
所以,解决重复登陆的思路就是,当前用户登陆的时候去session里面查询,所有的session,看有没有跟当前登陆用户一样的用户已经登陆,比如说,比较用户名。如果有,则将其剔除, session.setTimeout(0);
不知道springboot如何集成shiro的可以看我的上篇文章
代码示例:
1.shiro配置。
/**
* shiro 配置
*/
@Configuration
public class ShiroConfig {
private final static Logger logger = LoggerFactory.getLogger(ShiroConfig.class);
// 下面两个方法对 注解权限起作用有很大的关系,请把这两个方法,放在配置的最上面
@Bean(name = "lifecycleBeanPostProcessor")
public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}
@Bean
public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
autoProxyCreat