This commit is contained in:
2023-07-07 12:52:16 +08:00
parent d44775e87c
commit 8aad406ab0
9 changed files with 57 additions and 41 deletions

View File

@ -166,12 +166,13 @@ public class SysLoginServiceImpl implements SysLoginService {
UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
String browser = userAgent.getBrowser().getName() + BaseConstant.LINE_JOIN_STR + userAgent.getVersion();
String os = userAgent.getOs().getName();
if (!authConfigApiService.checkAllowBothOnline()) {
redisService.set(SecurityConstant.LOGGED_USER_REDIS_KEY + username, deviceSn, TokenUtil.TOKEN_EXPIRE_HOUR_TIME * 3600);
}
OnlineUser onlineUser = new OnlineUser(deviceSn, username, nickname, ip, address, browser, os, new Date());
onlineUserService.insert(onlineUser);
redisService.set(SecurityConstant.LAST_LOGIN_USER_REDIS_KEY + username, deviceSn, TokenUtil.TOKEN_EXPIRE_HOUR_TIME * 3600);
// 允许同时在线
if (authConfigApiService.checkAllowBothOnline()) {
redisService.hSet(SecurityConstant.LOGIN_USER_DEVICES_REDIS_KEY + username, deviceSn, 1, TokenUtil.TOKEN_EXPIRE_HOUR_TIME * 3600);
}
return onlineUser;
}

View File

@ -1,6 +1,8 @@
package com.qiaoba.module.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.qiaoba.api.auth.service.AuthConfigApiService;
import com.qiaoba.api.auth.service.OnlineUserService;
import com.qiaoba.api.auth.service.SysUserDetailsApiService;
import com.qiaoba.api.system.entity.SysUser;
import com.qiaoba.api.auth.constants.SecurityConstant;
@ -59,16 +61,8 @@ public class SysUserDetailsServiceImpl implements UserDetailsService, SysUserDet
SysUser user = sysUserService.selectByUsername(username);
UserDetails details = createUserDetails(user);
SecurityUser securityUser = BeanUtil.copyProperties(details, SecurityUser.class);
securityUser.setDeviceSn(deviceSn);
redisService.set(SecurityConstant.USER_DETAILS_REDIS_KEY + username, securityUser, TokenUtil.TOKEN_EXPIRE_HOUR_TIME * 3600);
return details;
}
@Override
public void deleteCache(String username, String deviceSn) {
SecurityUser user = redisService.getObject(SecurityConstant.USER_DETAILS_REDIS_KEY + username, SecurityUser.class);
if (Objects.nonNull(user) && deviceSn.equals(user.getDeviceSn())) {
redisService.del(SecurityConstant.USER_DETAILS_REDIS_KEY + username);
}
}
}