From a522f170fe22ffeb03e2b6bc81ae40243fb4cecb Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 05 Aug 2024 02:09:36 +0800
Subject: [PATCH] 1

---
 websocketSerivce/src/main/java/org/example/util/LoginInterceptor.java |   38 +++++++++++++++++++++++++++++++++++---
 1 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/websocketSerivce/src/main/java/org/example/util/LoginInterceptor.java b/websocketSerivce/src/main/java/org/example/util/LoginInterceptor.java
index e69c348..701c459 100644
--- a/websocketSerivce/src/main/java/org/example/util/LoginInterceptor.java
+++ b/websocketSerivce/src/main/java/org/example/util/LoginInterceptor.java
@@ -1,5 +1,12 @@
 package org.example.util;
 
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.example.pojo.User;
+import org.example.server.UserService;
+import org.example.server.impl.UserServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
@@ -12,21 +19,46 @@
  * @description:
  * @create: 2024-07-29 11:15
  **/
+@Component
 public class LoginInterceptor implements HandlerInterceptor {
 
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
             throws Exception {
 
-        HttpSession session = request.getSession();
-
         // 假设登录状态信息保存在 session 中,这里简单示例,实际项目中可能会有自己的登录状态判断逻辑
-        if (session.getAttribute("loggedInUser") != null) {
+        String token = null;
+        // 如果是 OPTIONS 请求,我们就让他通过,不管他
+        if (request.getMethod().equals("OPTIONS")) {
+            response.setStatus(HttpServletResponse.SC_OK);
+            return true;
+        }else {
+            token = request.getHeader("token");
+        }
+        if(null == token){
+            // 未登录,返回未授权错误码或重定向到登录页
+            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);  // 返回 401 未授权状态码
+            response.setCharacterEncoding("UTF-8");
+            response.getWriter().write("请登录");
+            return false;
+        }
+        User user = JwtUtil.verify(token);
+        if(null == user){
+            // 未登录,返回未授权错误码或重定向到登录页
+            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);  // 返回 401 未授权状态码
+            response.setCharacterEncoding("UTF-8");
+            response.getWriter().write("请登录");
+            return false;
+        }
+
+        if (user.getIsRoot() == 1) {
             // 已登录,允许请求继续
             return true;
         } else {
             // 未登录,返回未授权错误码或重定向到登录页
             response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);  // 返回 401 未授权状态码
+            response.setCharacterEncoding("UTF-8");
+            response.getWriter().write("请登录");
             return false;
         }
     }

--
Gitblit v1.9.3