From 83024eccacc54be0e60eee14d19d03bf9d63ba78 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 11 七月 2024 11:41:54 +0800
Subject: [PATCH] 调整session、caffeine存活时间
---
src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java | 44 +++++++++++++++++++++++++++++++++++++-------
1 files changed, 37 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java
index 4d28777..4d07825 100644
--- a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java
+++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java
@@ -1,21 +1,32 @@
package com.ycl.jxkg.config.spring.security;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ycl.jxkg.base.SystemCode;
-import com.ycl.jxkg.domain.UserEventLog;
+import com.ycl.jxkg.constants.CaffeineConstant;
+import com.ycl.jxkg.domain.entity.SysConfig;
+import com.ycl.jxkg.domain.entity.UserEventLog;
+import com.ycl.jxkg.enums.general.YesOrNoEnum;
import com.ycl.jxkg.event.UserEvent;
+import com.ycl.jxkg.mapper.SysConfigMapper;
import com.ycl.jxkg.service.UserService;
+import com.ycl.jxkg.utils.CaffeineUtil;
+import com.ycl.jxkg.utils.DateTimeUtil;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
+import java.util.List;
/**
@@ -29,6 +40,8 @@
private final ApplicationEventPublisher eventPublisher;
private final UserService userService;
+ private final CaffeineUtil caffeineUtil;
+ private final SysConfigMapper sysConfigMapper;
/**
* Instantiates a new Rest authentication success handler.
@@ -37,9 +50,11 @@
* @param userService the user service
*/
@Autowired
- public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService) {
+ public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService, CaffeineUtil caffeineUtil, SysConfigMapper sysConfigMapper) {
this.eventPublisher = eventPublisher;
this.userService = userService;
+ this.caffeineUtil = caffeineUtil;
+ this.sysConfigMapper = sysConfigMapper;
}
@Override
@@ -47,14 +62,29 @@
Object object = authentication.getPrincipal();
if (null != object) {
User springUser = (User) object;
- com.ycl.jxkg.domain.User user = userService.getUserByUserName(springUser.getUsername());
+ // 鐧诲綍涔嬪悗淇濆瓨鎴栨洿鏂� 鐢ㄦ埛鍚嶄笌session鐨勫叧绯�
+ String sessionId = request.getSession().getId();
+ caffeineUtil.put(CaffeineConstant.AUTH, springUser.getUsername(), sessionId);
+ com.ycl.jxkg.domain.entity.User user = userService.getUserByUserName(springUser.getUsername());
if (null != user) {
+ List<SysConfig> configList = new LambdaQueryChainWrapper<>(sysConfigMapper)
+ .list();
+ Integer passwordExpireDays = 30;
+ if (configList.size() == 1) {
+ passwordExpireDays = configList.get(0).getPasswordExpireTime();
+ }
+ Date now = new Date();
+ // 瀵嗙爜杩囨湡杩斿洖寮哄埗淇敼瀵嗙爜鏍囪瘑
+ if (DateTimeUtil.getTwoTimeDiffDay(now, user.getLastUpdatePasswordTime()) > passwordExpireDays) {
+ RestUtil.response(response, 205, "瀵嗙爜杩囨湡锛岃淇敼瀵嗙爜", user.getId());
+ return;
+ }
+
UserEventLog userEventLog = new UserEventLog(user.getId(), user.getUserName(), user.getRealName(), new Date());
- userEventLog.setContent(user.getUserName() + " 鐧诲綍浜嗗涔嬫�濆紑婧愯�冭瘯绯荤粺");
+ userEventLog.setContent(user.getUserName() + " 鐧诲綍浜嗘睙瑗胯闊宠棰戝煿璁郴缁�");
eventPublisher.publishEvent(new UserEvent(userEventLog));
- com.ycl.jxkg.domain.User newUser = new com.ycl.jxkg.domain.User();
- newUser.setUserName(user.getUserName());
- newUser.setImagePath(user.getImagePath());
+ com.ycl.jxkg.domain.entity.User newUser = new com.ycl.jxkg.domain.entity.User();
+ BeanUtils.copyProperties(user,newUser);
RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), newUser);
}
} else {
--
Gitblit v1.8.0