| | |
| | | /** |
| | | * token验证处理 |
| | | * |
| | | * @author ruoyi |
| | | * @author ard |
| | | */ |
| | | @Component |
| | | public class TokenService |
| | |
| | | // 令牌有效期(默认30分钟) |
| | | @Value("${token.expireTime}") |
| | | private int expireTime; |
| | | |
| | | // 是否允许账户多终端同时登录(true允许 false不允许) |
| | | @Value("${token.soloLogin}") |
| | | private boolean soloLogin; |
| | | |
| | | protected static final long MILLIS_SECOND = 1000; |
| | | |
| | |
| | | /** |
| | | * 删除用户身份信息 |
| | | */ |
| | | public void delLoginUser(String token) |
| | | public void delLoginUser(String token, Long userId) |
| | | { |
| | | if (StringUtils.isNotEmpty(token)) |
| | | { |
| | | String userKey = getTokenKey(token); |
| | | redisCache.deleteObject(userKey); |
| | | } |
| | | if (!soloLogin && StringUtils.isNotNull(userId)) |
| | | { |
| | | String userIdKey = getUserIdKey(userId); |
| | | redisCache.deleteObject(userIdKey); |
| | | } |
| | | } |
| | | |
| | |
| | | // 根据uuid将loginUser缓存 |
| | | String userKey = getTokenKey(loginUser.getToken()); |
| | | redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); |
| | | if (!soloLogin) |
| | | { |
| | | // 缓存用户唯一标识,防止同一帐号,同时登录 |
| | | String userIdKey = getUserIdKey(loginUser.getUser().getUserId()); |
| | | redisCache.setCacheObject(userIdKey, userKey, expireTime, TimeUnit.MINUTES); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | { |
| | | return CacheConstants.LOGIN_TOKEN_KEY + uuid; |
| | | } |
| | | |
| | | private String getUserIdKey(Long userId) |
| | | { |
| | | return Constants.LOGIN_USERID_KEY + userId; |
| | | } |
| | | } |