From 169d7d0cecd3e50aca33d42cc38230dd8aeb5770 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 23 七月 2025 16:32:26 +0800
Subject: [PATCH] 实现AuthInterceptor中的空白方法

---
 /dev/null                                                                 |  144 ----------------------------
 se-common/src/main/java/com/terra/common/service/CommonService.java       |   50 +++++++++
 se-common/src/main/java/com/terra/common/mapper/CommonMapper.java         |   11 +
 se-common/src/main/java/com/terra/common/interceptor/AuthInterceptor.java |   82 +++++++--------
 4 files changed, 96 insertions(+), 191 deletions(-)

diff --git a/se-common/src/main/java/com/terra/common/interceptor/AuthInterceptor.java b/se-common/src/main/java/com/terra/common/interceptor/AuthInterceptor.java
index f9c1700..5ba477f 100644
--- a/se-common/src/main/java/com/terra/common/interceptor/AuthInterceptor.java
+++ b/se-common/src/main/java/com/terra/common/interceptor/AuthInterceptor.java
@@ -4,6 +4,7 @@
 import com.terra.common.entity.all.HttpStatus;
 import com.terra.common.entity.all.ResponseMsg;
 import com.terra.common.entity.all.StaticData;
+import com.terra.common.entity.lf.TokenPo;
 import com.terra.common.entity.lf.UserPo;
 import com.terra.common.helper.StringHelper;
 import com.terra.common.helper.WebHelper;
@@ -14,7 +15,6 @@
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 
-import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -25,7 +25,7 @@
  */
 @Configuration
 public class AuthInterceptor implements HandlerInterceptor {
-    private CommonService commonService;
+    private final CommonService commonService;
 
     private static final Log log = LogFactory.getLog(AuthInterceptor.class);
 
@@ -66,7 +66,7 @@
             }
 
             // 3.鑾峰彇鐢ㄦ埛浠ょ墝
-            UserPo ue = commonService.getUserByToken(token); //new UserPo(); //sysService.tokenService.getUserByToken(token);
+            UserPo ue = commonService.getUserByToken(token);
             if (null == ue) {
                 return WebHelper.writeStr2Page(response, NO_LOGIN);
             }
@@ -83,21 +83,21 @@
             }
 
             // 6.admin璺宠繃鏉冮檺妫�娴�
-            if (StaticData.ADMIN.equals(ue.getUid())) {
-                return true;
+            //if (StaticData.ADMIN.equals(ue.getUid())) {
+            //    return true;
+            //}
+
+            // 7.妫�鏌ョ敤鎴稩D鏄惁绂佺敤
+            if (commonService.isUidDisable(ue)) {
+                return WebHelper.writeStr2Page(response, USER_LOCK);
             }
 
-            // 7.妫�鏌ョ櫧鍚嶅崟鍜孖P涓�鑷存��
+            // 8.妫�鏌ョ櫧鍚嶅崟鍜孖P涓�鑷存��
             if (!checkWhiteList(ip, request)) {
                 if (!checkIpSource(ip, token)) {
                     return WebHelper.writeStr2Page(response, ILLEGAL_TOKEN);
                 }
             }
-
-            // 8.妫�鏌ョ敤鎴稩D鏄惁绂佺敤
-            //if (sysService.tokenService.isUidDisable(ue)) {
-            //    return WebHelper.writeStr2Page(response, USER_LOCK);
-            //}
 
             // 9.鏉冮檺鏍¢獙
             if (!checkPerms(ue, request)) {
@@ -127,31 +127,22 @@
     }
 
     /**
-     * 妫�鏌ユ潈闄�
+     * 妫�鏌ョ櫧鍚嶅崟
      */
-    private boolean checkPerms(UserPo ue, HttpServletRequest request) {
-        return true;
+    private boolean checkWhiteList(String ip, HttpServletRequest request) {
+        List<String> whiteList = commonService.selectIpList(2);
+        if (whiteList == null || whiteList.isEmpty()) {
+            return false;
+        }
 
-//        List<String> list = null; //sysService.permsService.selectPerms(ue.getUid());
-//        if (list == null || list.size() == 0) {
-//            return false;
-//        }
-//
-//        String url = request.getRequestURI();
-//        for (String perm : list) {
-//            if (url.contains(perm)) {
-//                return true;
-//            }
-//        }
-//
-//        return false;
+        return whiteList.contains(ip);
     }
 
     /**
      * 妫�鏌ラ粦鍚嶅崟
      */
     private boolean checkBlackList(String ip, HttpServletRequest request) {
-        List<String> blackList = null; // sysService.blacklistService.selectIpList(1);
+        List<String> blackList = commonService.selectIpList(1);
         if (blackList == null || blackList.isEmpty()) {
             return true;
         }
@@ -163,25 +154,30 @@
     }
 
     /**
-     * 妫�鏌ョ櫧鍚嶅崟
-     */
-    private boolean checkWhiteList(String ip, HttpServletRequest request) {
-        List<String> whiteList = null; // sysService.blacklistService.selectIpList(2);
-        if (whiteList == null || whiteList.isEmpty()) {
-            return false;
-        }
-
-        return whiteList.contains(ip);
-    }
-
-    /**
      * 妫�鏌P涓�鑷存�э細鍥哄畾浠ょ墝涓嶆鏌�
      */
     private boolean checkIpSource(String ip, String token) {
-        //TokenEntity te = sysService.tokenService.getEntityByToken(token);
+        TokenPo te = commonService.getTokenPo(token);
 
-        //return StaticData.I1 == te.getType() || te.getIp().equals(ip);
+        return StaticData.I1 == te.getType() || te.getIp().equals(ip);
+    }
 
-        return true;
+    /**
+     * 妫�鏌ユ潈闄�
+     */
+    private boolean checkPerms(UserPo ue, HttpServletRequest request) {
+        List<String> list = commonService.selectPerms(ue.getUid());
+        if (list == null || list.size() == 0) {
+            return false;
+        }
+
+        String url = request.getRequestURI();
+        for (String perm : list) {
+            if (url.contains(perm)) {
+                return true;
+            }
+        }
+
+        return false;
     }
 }
diff --git a/se-common/src/main/java/com/terra/common/mapper/CommonMapper.java b/se-common/src/main/java/com/terra/common/mapper/CommonMapper.java
index 2319b7e..537e33d 100644
--- a/se-common/src/main/java/com/terra/common/mapper/CommonMapper.java
+++ b/se-common/src/main/java/com/terra/common/mapper/CommonMapper.java
@@ -9,6 +9,7 @@
 import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Map;
 
 @Mapper
@@ -18,8 +19,14 @@
     int insertOperate(Map<String, Object> map);
 
     @Select("select * from lf.sys_user where id = (select create_user from lf.sys_token where token=#{token} and expire > now() limit 1)")
-    public UserPo selectByToken(String token);
+    UserPo selectByToken(String token);
 
     @Select("select a.* from lf.sys_token a where token = #{token} and expire > now() limit 1")
-    public TokenPo selectOneByToken(String token);
+    TokenPo selectOneByToken(String token);
+
+    @Select("")
+    List<String> selectIpList(Integer type);
+
+    @Select("")
+    List<String> selectPerms(String type);
 }
diff --git a/se-common/src/main/java/com/terra/common/service/CommonService.java b/se-common/src/main/java/com/terra/common/service/CommonService.java
index a62e402..480d31e 100644
--- a/se-common/src/main/java/com/terra/common/service/CommonService.java
+++ b/se-common/src/main/java/com/terra/common/service/CommonService.java
@@ -2,6 +2,7 @@
 
 import com.terra.common.entity.all.RedisCacheKey;
 import com.terra.common.entity.all.SettingData;
+import com.terra.common.entity.all.StaticData;
 import com.terra.common.entity.lf.TokenPo;
 import com.terra.common.entity.lf.UserPo;
 import com.terra.common.helper.StringHelper;
@@ -11,6 +12,9 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -20,10 +24,11 @@
 @Component
 public class CommonService {
     @Resource
-    RedisService redisService;
+    CommonMapper mapper;
+
 
     @Resource
-    CommonMapper mapper;
+    RedisService redisService;
 
     public UserPo getCurrentUser(HttpServletRequest req) {
         String token = WebHelper.getToken(req);
@@ -76,4 +81,45 @@
 
         return po;
     }
+
+    /**
+     * 鐢ㄦ埛ID鏄�/鍚︾鐢�
+     */
+    public boolean isUidDisable(UserPo ue) {
+        String key = RedisCacheKey.signPwdError(ue.getUid());
+        Object objCount = redisService.get(key);
+
+        return null != objCount && (int) objCount >= SettingData.PWD_ERR_COUNT;
+    }
+
+    public List<String> selectIpList(Integer type) {
+        String key = RedisCacheKey.blacklistKey(type.toString());
+
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<String>) obj;
+        }
+
+        List<String> list = mapper.selectIpList(type);
+        if (list != null && !list.isEmpty()) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
+
+    public List<String> selectPerms(String uid) {
+        String key = RedisCacheKey.permsPermsKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<String>) obj;
+        }
+
+        List<String> list = mapper.selectPerms(uid);
+        if (list != null && !list.isEmpty()) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
 }
diff --git a/se-system/src/main/java/com/terra/system/config/WebConfig.java b/se-system/src/main/java/com/terra/system/config/WebConfig.java
deleted file mode 100644
index 73de1c6..0000000
--- a/se-system/src/main/java/com/terra/system/config/WebConfig.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.terra.system.config;
-
-import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.alibaba.fastjson.support.config.FastJsonConfig;
-import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-import com.alibaba.fastjson2.JSON;
-import com.terra.common.interceptor.AuthInterceptor;
-import com.terra.common.service.CommonService;
-import com.terra.system.service.all.SysService;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.Ordered;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.util.AntPathMatcher;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import org.springframework.web.servlet.config.annotation.*;
-import reactor.core.Exceptions;
-
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Web閰嶇疆绫�
- * @author WWW
- */
-//@Configuration
-public class WebConfig extends WebMvcConfigurationSupport {
-    @Resource
-    CommonService commonService;
-
-    @Override
-    public void addViewControllers(ViewControllerRegistry registry) {
-        // 璁剧疆璁块棶璺緞涓� 鈥�/鈥� 璺宠浆鍒版寚瀹氶〉闈�
-        registry.addViewController("/").setViewName("redirect:/sign/toIndex");
-        // 璁剧疆涓烘渶楂樹紭鍏堢骇
-        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
-    }
-
-    /**
-     * 鑾峰彇鎷︽埅鍣ㄥ璞�
-     *
-     * @return
-     */
-    public AuthInterceptor getAuthBean() {
-        return new AuthInterceptor(commonService);
-    }
-
-    /**
-     * swagger鎺у埗
-     */
-    @Override
-    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-        //registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
-        registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-        registry.addResourceHandler("/druid/**").addResourceLocations("classpath:/META-INF/resources/druid/");
-        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
-        super.addResourceHandlers(registry);
-    }
-
-    /**
-     * 蹇界暐url鍦板潃澶у皬鍐�
-     */
-    @Override
-    protected void configurePathMatch(PathMatchConfigurer configurer) {
-        AntPathMatcher matcher = new AntPathMatcher();
-        matcher.setCaseSensitive(false);
-
-        configurer.setPathMatcher(matcher);
-    }
-
-    /**
-     * 璺ㄥ煙璇锋眰
-     */
-    /*@Override
-    protected void addCorsMappings(CorsRegistry registry) {
-        registry.addMapping("/**")
-                .allowCredentials(true)
-                .allowedOrigins("*")
-                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
-                .allowedHeaders("*")
-                .maxAge(3600);
-    }*/
-
-    /**
-     * 娣诲姞缁熶竴鐨勬嫤鎴櫒
-     */
-    @Override
-    protected void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(getAuthBean())
-                // .excludePathPatterns("/swagger", "/webjars/**", "/v2/**", "/sign/**")
-                //.excludePathPatterns("/v3/api-docs")
-                .addPathPatterns("/**");
-        super.addInterceptors(registry);
-    }
-
-    /**
-     * 澶勭悊json鏍煎紡锛屽�糿ull鐨勮浆鎹负""
-     */
-    @Override
-    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
-        //FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
-        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter() {
-            @Override
-            protected void writeInternal(Object object, org.springframework.http.HttpOutputMessage outputMessage)
-                    throws IOException, org.springframework.http.converter.HttpMessageNotWritableException {
-                ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-                if (attributes != null) {
-                    String requestURI = attributes.getRequest().getRequestURI();
-                    if ("/v3/api-docs".equals(requestURI)) { // 鎺掗櫎 /v3/api-docs 璺緞
-                        // 浣跨敤榛樿鐨� JSON 搴忓垪鍖栵紙濡� Jackson锛夛紝杩欓噷闇�瑕佹墜鍔ㄥ鐞嗭紝涓嶈兘鐩存帴璋冪敤 super.writeInternal
-                        outputMessage.getBody().write(String.valueOf(object).getBytes());
-                        return;
-                    }
-                }
-                super.writeInternal(object, outputMessage); // 鍏朵粬璺緞浣跨敤 Fastjson2 澶勭悊
-            }
-        };
-
-        FastJsonConfig config = new FastJsonConfig();
-        config.setSerializerFeatures(
-                SerializerFeature.WriteNullListAsEmpty,
-                SerializerFeature.WriteMapNullValue,
-                //SerializerFeature.WriteNullStringAsEmpty,
-                SerializerFeature.WriteNullNumberAsZero,
-                SerializerFeature.WriteNullBooleanAsFalse);
-        // 缁撴灉鏄惁鏍煎紡鍖�,榛樿涓篺alse
-        //SerializerFeature.PrettyFormat);
-
-        converter.setFastJsonConfig(config);
-        converter.setDefaultCharset(StandardCharsets.UTF_8);
-        converter.setSupportedMediaTypes(Collections.singletonList(
-                MediaType.APPLICATION_JSON
-        ));
-        converters.add(converter);
-    }
-}

--
Gitblit v1.9.3