From 84333544560aec1f3be03e9870631936d039a7a1 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 11 七月 2024 09:47:37 +0800
Subject: [PATCH] 增加session过滤器,阻止同一个用户同时登录

---
 src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 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 a5ead92..58df9d5 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,10 +1,12 @@
 package com.ycl.jxkg.config.spring.security;
 
 import com.ycl.jxkg.base.SystemCode;
+import com.ycl.jxkg.constants.CaffeineConstant;
 import com.ycl.jxkg.domain.entity.UserEventLog;
 import com.ycl.jxkg.enums.general.YesOrNoEnum;
 import com.ycl.jxkg.event.UserEvent;
 import com.ycl.jxkg.service.UserService;
+import com.ycl.jxkg.utils.CaffeineUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
@@ -12,6 +14,7 @@
 import org.springframework.security.core.userdetails.User;
 import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -31,6 +34,7 @@
 
     private final ApplicationEventPublisher eventPublisher;
     private final UserService userService;
+    private final CaffeineUtil caffeineUtil;
 
     /**
      * Instantiates a new Rest authentication success handler.
@@ -39,9 +43,10 @@
      * @param userService    the user service
      */
     @Autowired
-    public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService) {
+    public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService, CaffeineUtil caffeineUtil) {
         this.eventPublisher = eventPublisher;
         this.userService = userService;
+        this.caffeineUtil = caffeineUtil;
     }
 
     @Override
@@ -49,6 +54,9 @@
         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) {
                 // 瀵嗙爜杩囨湡杩斿洖寮哄埗淇敼瀵嗙爜鏍囪瘑

--
Gitblit v1.8.0