审计日志入库完成

This commit is contained in:
2022-07-14 19:27:23 +08:00
parent f58dda8534
commit e93a3c1e08
6 changed files with 120 additions and 73 deletions

View File

@@ -54,10 +54,10 @@ public class UserTokenService {
* @param oAuth2AccessToken 认证后的最新token信息
*/
@Async("asyncExecutor")
public void recordUserInfo(OAuth2AccessToken oAuth2AccessToken,String ip) {
public void recordUserInfo(OAuth2AccessToken oAuth2AccessToken, String ip) {
UserTokenInfo userTokenInfo = new UserTokenInfo();
String accessTokenValue = oAuth2AccessToken.getValue();
JWSObject accessJwsObject ;
JWSObject accessJwsObject;
try {
accessJwsObject = JWSObject.parse(accessTokenValue);
} catch (ParseException e) {
@@ -66,6 +66,7 @@ public class UserTokenService {
JSONObject accessJson = JSONUtil.parseObj(accessJwsObject.getPayload().toString());
String userIndex = accessJson.getStr(SecurityConstants.USER_INDEX_KEY);
String nickName = accessJson.getStr(SecurityConstants.USER_NICKNAME_KEY);
String loginName = accessJson.getStr(SecurityConstants.USER_NAME_KEY);
//查询是否有在线的当前用户
String onlineUserKey = SecurityConstants.TOKEN_ONLINE_PREFIX + userIndex;
Object onlineTokenInfoOld = redisUtil.getObjectByKey(onlineUserKey);
@@ -86,7 +87,7 @@ public class UserTokenService {
}
String accessJti = accessJson.getStr(SecurityConstants.JWT_JTI);
OAuth2RefreshToken refreshToken = oAuth2AccessToken.getRefreshToken();
JWSObject refreshJwsObject ;
JWSObject refreshJwsObject;
try {
refreshJwsObject = JWSObject.parse(refreshToken.getValue());
} catch (ParseException e) {
@@ -97,13 +98,13 @@ public class UserTokenService {
Long refreshExpireTime = refreshJson.getLong(SecurityConstants.JWT_EXP);
userTokenInfo.setAccessTokenJti(accessJti);
userTokenInfo.setRefreshToken(refreshToken.getValue());
LocalDateTime refreshLifeTime =LocalDateTime.ofEpochSecond(refreshExpireTime,0,ZoneOffset.of("+8"));
LocalDateTime refreshLifeTime = LocalDateTime.ofEpochSecond(refreshExpireTime, 0, ZoneOffset.of("+8"));
userTokenInfo.setRefreshTokenExpire(refreshLifeTime);
//生命周期在refreshToken的基础上延迟5分钟
redisUtil.saveByKeyWithExpire(onlineUserKey, userTokenInfo, refreshLifeTime.plusMinutes(5L).toEpochSecond(ZoneOffset.of("+8")) - LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")));
//记录成功登录后的信息
LogInfoDTO logInfoDTO = new LogInfoDTO(nickName, ip, "登录认证", OperateType.AUTHENTICATE, 1, "",0, 1, generalInfo.getMicroServiceName(), userIndex);
LogInfoDTO logInfoDTO = new LogInfoDTO(loginName, nickName, ip, "登录认证", OperateType.AUTHENTICATE, 1, "", 0, 1, generalInfo.getMicroServiceName(), userIndex);
publisher.send("/userLog", PubUtils.obj2json(logInfoDTO), 2, false);
}
@@ -126,7 +127,7 @@ public class UserTokenService {
if (CollectionUtils.isNotEmpty(blackUsers)) {
blackUsers.forEach(temp -> {
//存在当前的刷新token则抛出业务异常
if(temp.getRefreshToken().equalsIgnoreCase(refreshToken)){
if (temp.getRefreshToken().equalsIgnoreCase(refreshToken)) {
throw new BusinessException(CommonResponseEnum.TOKEN_EXPIRE_JWT);
}
});