Преглед на файлове

修正请求前缀和处理游客

mingfu преди 1 месец
родител
ревизия
ce1af21eb7

+ 2 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/CommController.java

@@ -35,7 +35,8 @@ import org.springframework.web.bind.annotation.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
-@RestController("/front/comm")
+@RestController
+@RequestMapping("front/comm")
 @Api(tags = "前台-公共")
 @Slf4j
 public class CommController {

+ 2 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/UserController.java

@@ -25,7 +25,8 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 
-@RestController("/front/user")
+@RestController
+@RequestMapping("/front/user")
 @Api(tags = "前台-用户")
 public class UserController {
     private final IDzControlService dzControlService;

+ 9 - 5
ie-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java

@@ -11,6 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginCard;
 import com.ruoyi.common.enums.ExamType;
 import com.ruoyi.common.enums.UserRegStatus;
+import com.ruoyi.framework.web.context.VistorContextHolder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -44,6 +45,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
             UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
             authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
             SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+            VistorContextHolder.setContext(loginUser.getUser());
         } else {
             SysUser user = new SysUser();
             user.setUserId(0L);
@@ -52,11 +54,13 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
             String examType = request.getHeader("examType");
             user.setExamType(null == examType ? null : ExamType.valueOf(examType));
             user.setRegStatus(UserRegStatus.Visitor);
-            LoginUser anonymous = new LoginUser(user.getUserId(), 0L, user, new LoginCard(), Collections.emptyNavigableSet());
-            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(anonymous, null, Collections.emptyList());
-            authenticationToken.setAuthenticated(false);
-            SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+            VistorContextHolder.setContext(user);
+        }
+        try {
+            chain.doFilter(request, response);
+        } finally {
+            VistorContextHolder.clearContext();
         }
-        chain.doFilter(request, response);
+
     }
 }

+ 29 - 0
ie-framework/src/main/java/com/ruoyi/framework/web/context/VistorContextHolder.java

@@ -0,0 +1,29 @@
+package com.ruoyi.framework.web.context;
+
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+
+/**
+ * 身份验证信息
+ * 
+ * @author ruoyi
+ */
+public class VistorContextHolder
+{
+    private static final ThreadLocal<SysUser> contextHolder = new ThreadLocal<>();
+
+    public static SysUser getContext()
+    {
+        return contextHolder.get();
+    }
+
+    public static void setContext(SysUser context)
+    {
+        contextHolder.set(context);
+    }
+
+    public static void clearContext()
+    {
+        contextHolder.remove();
+    }
+}