强退&过期清理登录帐号缓存会话

This commit is contained in:
RuoYi
2020-08-10 16:08:03 +08:00
parent 134e559704
commit cdbf0e2264
8 changed files with 44 additions and 22 deletions

View File

@ -57,6 +57,14 @@ public interface ISysUserOnlineService
*/
public void forceLogout(String sessionId);
/**
* 清理用户缓存
*
* @param loginName 登录名称
* @param sessionId 会话ID
*/
public void removeUserCache(String loginName, String sessionId);
/**
* 查询会话集合
*

View File

@ -1,9 +1,14 @@
package com.ruoyi.system.service.impl;
import java.io.Serializable;
import java.util.Date;
import java.util.Deque;
import java.util.List;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.ehcache.EhCacheManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.constant.ShiroConstants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysUserOnline;
@ -20,6 +25,9 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService
{
@Autowired
private SysUserOnlineMapper userOnlineDao;
@Autowired
private EhCacheManager ehCacheManager;
/**
* 通过会话序号查询信息
@ -101,6 +109,23 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService
userOnlineDao.deleteOnlineById(sessionId);
}
/**
* 清理用户缓存
*
* @param loginName 登录名称
* @param sessionId 会话ID
*/
public void removeUserCache(String loginName, String sessionId)
{
Cache<String, Deque<Serializable>> cache = ehCacheManager.getCache(ShiroConstants.SYS_USERCACHE);
Deque<Serializable> deque = cache.get(loginName);
if (StringUtils.isNull(cache) || StringUtils.isEmpty(deque))
{
return;
}
deque.remove(sessionId);
}
/**
* 查询会话集合
*