From cd59ededbf05a0ae73b8f4944fbf40a1fb01d28a Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期一, 11 十一月 2024 18:03:43 +0800
Subject: [PATCH] 错题详情
---
src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java | 51 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 45 insertions(+), 6 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 6a9c670..a4f55de 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,34 @@
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.domain.vo.student.user.UserLoginVO;
+import com.ycl.jxkg.enums.general.YesOrNoEnum;
import com.ycl.jxkg.event.UserEvent;
+import com.ycl.jxkg.mapper.ClassesUserMapper;
+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 +42,10 @@
private final ApplicationEventPublisher eventPublisher;
private final UserService userService;
+ private final CaffeineUtil caffeineUtil;
+ private final SysConfigMapper sysConfigMapper;
+ @Autowired
+ private ClassesUserMapper classesUserMapper;
/**
* Instantiates a new Rest authentication success handler.
@@ -37,9 +54,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,15 +66,35 @@
Object object = authentication.getPrincipal();
if (null != object) {
User springUser = (User) object;
+ // 鐧诲綍涔嬪悗淇濆瓨鎴栨洿鏂� 鐢ㄦ埛鍚嶄笌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.entity.User newUser = new com.ycl.jxkg.domain.entity.User();
- newUser.setUserName(user.getUserName());
- newUser.setImagePath(user.getImagePath());
- RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), newUser);
+ // 淇敼鐢ㄦ埛鐨勬渶鍚庣櫥褰曟椂闂�
+ user.setLastActiveTime(new Date());
+ userService.updateUser(user);
+ UserLoginVO userLoginVO = new UserLoginVO();
+ BeanUtils.copyProperties(user,userLoginVO);
+ List<String> classesNames = classesUserMapper.getClassesNameByUserId(user.getId());
+ userLoginVO.setClassName(classesNames);
+ RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), userLoginVO);
}
} else {
RestUtil.response(response, SystemCode.UNAUTHORIZED.getCode(), SystemCode.UNAUTHORIZED.getMessage());
--
Gitblit v1.8.0