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