From a2358870aca60abe779ea57c6f0c9133339fdc26 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 11 七月 2024 10:20:11 +0800 Subject: [PATCH] 调整密码过期校验使用登陆时检测 --- src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java | 20 ++++++++++++++++++-- 1 files changed, 18 insertions(+), 2 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 58df9d5..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,12 +1,16 @@ 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.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; @@ -14,6 +18,7 @@ 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; @@ -21,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; +import java.util.List; /** @@ -35,6 +41,7 @@ private final ApplicationEventPublisher eventPublisher; private final UserService userService; private final CaffeineUtil caffeineUtil; + private final SysConfigMapper sysConfigMapper; /** * Instantiates a new Rest authentication success handler. @@ -43,10 +50,11 @@ * @param userService the user service */ @Autowired - public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService, CaffeineUtil caffeineUtil) { + public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService, CaffeineUtil caffeineUtil, SysConfigMapper sysConfigMapper) { this.eventPublisher = eventPublisher; this.userService = userService; this.caffeineUtil = caffeineUtil; + this.sysConfigMapper = sysConfigMapper; } @Override @@ -59,11 +67,19 @@ 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 (YesOrNoEnum.YES.equals(user.getNeedUpdatePassword())) { + 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() + " 鐧诲綍浜嗘睙瑗胯闊宠棰戝煿璁郴缁�"); eventPublisher.publishEvent(new UserEvent(userEventLog)); -- Gitblit v1.8.0