Pārlūkot izejas kodu

api 开头需要appId 验证不经数据库

wuweihao 2 gadi atpakaļ
vecāks
revīzija
108d6e1053

+ 95 - 89
720yun_fd_manage/gis_common/src/main/java/com/gis/common/config/WebMvcConfig.java

@@ -1,89 +1,95 @@
-//package com.gis.common.config;
-//
-//import com.alibaba.fastjson.serializer.SerializerFeature;
-//import com.alibaba.fastjson.support.config.FastJsonConfig;
-//import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-//import com.gis.common.constant.ConfigConstant;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.http.MediaType;
-//import org.springframework.web.servlet.config.annotation.CorsRegistry;
-//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-//
-//import java.util.ArrayList;
-//import java.util.List;
-//
-///**
-// * Created by owen on 2020/2/18 0018 12:01
-// */
-//@Configuration
-//public class WebMvcConfig implements WebMvcConfigurer {
-//
-//    @Autowired
-//    private CommonInterceptor commonInterceptor;
-//
-//    @Autowired
-//    ConfigConstant configConstant;
-//
-//    /**
-//     * 配置全局跨域
-//     * 开发、测试环境开启跨域, 正式环境不开启
-//     */
-//    @Override
-//    public void addCorsMappings(CorsRegistry registry) {
-//        String active = configConstant.active;
-//        if ("dev".equals(active) || "sit".equals(active)){
-//            registry.addMapping("/**")
-//                    .allowedOrigins("*")
-//                    .allowCredentials(true)
-//                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
-//                    .maxAge(3600);
-//        }
-//
-//    }
-//
-//
-//    /**
-//     * 添加拦截器
-//     */
-//    @Override
-//    public void addInterceptors(InterceptorRegistry registry) {
-//        registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
-//
-//    }
-//
-//
-//    /**
-//     * fastJson相关设置
-//     * Dto包含json,需要配置不然会异常
-//     * @return
-//     */
-//    @Bean
-//    public HttpMessageConverters customConverters() {
-//
-//        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
-//        // 创建FastJson信息转换对象
-//        FastJsonConfig fastJsonConfig = new FastJsonConfig();
-//
-//
-//        // 设置全程返回时间
-//        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm");
-//        // 设置返回值为null是时输出,不写的话,null 字段 不返回。也可以设置返回空串, 可以同时设置多个
-//        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-//
-//        fastJson.setFastJsonConfig(fastJsonConfig);
-//
-//        //3、中文乱码解决方案
-//        List<MediaType> mediaTypeList = new ArrayList<>();
-//        mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
-//        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
-//
-//        //4、将转换规则应用于转换对象
-//        fastJson.setSupportedMediaTypes(mediaTypeList);
-//
-//        return new HttpMessageConverters(fastJson);
-//    }
-//}
+package com.gis.common.config;
+
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import com.gis.common.constant.ConfigConstant;
+import com.gis.common.filter.ApiInterceptor;
+import com.gis.common.filter.CommonInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by owen on 2020/2/18 0018 12:01
+ */
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Autowired
+    private CommonInterceptor commonInterceptor;
+
+    @Autowired
+    ApiInterceptor apiInterceptor;
+
+    @Autowired
+    ConfigConstant configConstant;
+
+    /**
+     * 配置全局跨域
+     * 开发、测试环境开启跨域, 正式环境不开启
+     */
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        String active = configConstant.active;
+        if ("dev".equals(active) || "sit".equals(active)){
+            registry.addMapping("/**")
+                    .allowedOrigins("*")
+                    .allowCredentials(true)
+                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
+                    .maxAge(3600);
+        }
+
+    }
+
+
+    /**
+     * 添加拦截器
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
+        registry.addInterceptor(apiInterceptor).addPathPatterns("/api/**");
+
+    }
+
+
+    /**
+     * fastJson相关设置
+     * Dto包含json,需要配置不然会异常
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters customConverters() {
+
+        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
+        // 创建FastJson信息转换对象
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+
+
+        // 设置全程返回时间
+        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm");
+        // 设置返回值为null是时输出,不写的话,null 字段 不返回。也可以设置返回空串, 可以同时设置多个
+        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+
+        fastJson.setFastJsonConfig(fastJsonConfig);
+
+        //3、中文乱码解决方案
+        List<MediaType> mediaTypeList = new ArrayList<>();
+        mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
+        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
+
+        //4、将转换规则应用于转换对象
+        fastJson.setSupportedMediaTypes(mediaTypeList);
+
+        return new HttpMessageConverters(fastJson);
+    }
+}

+ 1 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/constant/ErrorEnum.java

@@ -13,6 +13,7 @@ public enum ErrorEnum {
     // 200X -> 系统类
 //    FAILURE_SYS_2001(2001, "对象不存在"),
     FAILURE_SYS_2020(2020, "appId为空"),
+    FAILURE_SYS_2021(2021, "appId解析有误"),
 
     // 201X -> 权限问题类
 //    FAILURE_SYS_2011(2011, "没有操作权限"),

+ 4 - 22
720yun_fd_manage/gis_service/src/main/java/com/gis/filter/ApiInterceptor.java

@@ -1,11 +1,9 @@
-package com.gis.filter;
+package com.gis.common.filter;
 
-import cn.hutool.core.util.StrUtil;
 import com.gis.common.constant.ErrorEnum;
 import com.gis.common.exception.BaseRuntimeException;
 import com.gis.common.util.EncryptUtils;
 import com.gis.common.util.RedisUtil;
-import com.gis.service.SysAppService;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +12,6 @@ import org.springframework.web.servlet.HandlerInterceptor;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -28,8 +25,6 @@ import java.util.concurrent.TimeUnit;
 @Component
 public class ApiInterceptor implements HandlerInterceptor {
 
-    @Autowired
-    SysAppService appService;
 
     private long startTime;
 
@@ -48,16 +43,10 @@ public class ApiInterceptor implements HandlerInterceptor {
 
         String requestURI = request.getRequestURI();
         String remoteAddr = request.getRemoteAddr();
-        log.info("请求ip: {}, 请求路径: {}", remoteAddr, requestURI);
-
-        // 只拦截/api 前缀
-        if (!requestURI.startsWith("/api/")){
-            return true;
-        }
-
         String appId = request.getHeader("appId");
+        log.info("请求ip: {}, 请求路径: {}, appId:{}", remoteAddr, requestURI, appId);
+
         BaseRuntimeException.isBlank(appId, ErrorEnum.FAILURE_SYS_2020);
-        log.info("appId: {}", appId);
 
         // 内网访问,直接放行
 //        if (remoteAddr.startsWith("192.168") || remoteAddr.startsWith("127.0.0") || remoteAddr.startsWith("localhost")) {
@@ -74,15 +63,8 @@ public class ApiInterceptor implements HandlerInterceptor {
 
         // 解密appId
         String type = EncryptUtils.getType(appId);
+        BaseRuntimeException.isBlank(type, ErrorEnum.FAILURE_SYS_2021);
 
-        // 这里使用一个appId对应多个ip的规则
-        List<String> ips= appService.findByType(appId);
-        if (!ips.contains(type)) {
-            String errorMsg = StrUtil.format("此类型: {} 没有登记, 拒绝访问", remoteAddr);
-            log.error(errorMsg);
-            BaseRuntimeException.getExc(null, errorMsg);
-            return false;
-        }
         redisUtil.set(appKey, appId, 5, TimeUnit.MINUTES);
 
         return true;

+ 1 - 1
720yun_fd_manage/gis_common/src/main/java/com/gis/common/config/CommonInterceptor.java

@@ -1,4 +1,4 @@
-package com.gis.common.config;
+package com.gis.common.filter;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;

+ 4 - 4
720yun_fd_manage/gis_common/src/main/java/com/gis/common/util/EncryptUtils.java

@@ -112,12 +112,12 @@ public class EncryptUtils {
 
     /**
      * 创建appId
-     * @param type type 应用前缀 类如: api
-     * @param identifier 允许为空
+     * @param type type 应用前缀 类如: 4dkk-v4
+     * @param remark 应用描述
      * @return
      */
-    public static String createAppId(String type, String identifier){
-        String str = type + ":" + identifier;
+    public static String createAppId(String type, String remark){
+        String str = type + ":" + remark;
         try {
             return desEncrypt(str);
         } catch (Exception e) {

+ 0 - 31
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/SysAppEntity.java

@@ -1,31 +0,0 @@
-package com.gis.domain.entity;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import java.io.Serializable;
-
-/**
- * 授权应用appId
- */
-@Data
-@Entity
-@Table(name = "sys_app")
-public class SysAppEntity extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = -853504493430501111L;
-
-    @ApiModelProperty(value = "AppId")
-    private String appId;
-
-    @ApiModelProperty(value = "备注")
-    private String remark;
-
-    @ApiModelProperty(value = "应用类型")
-    private String type;
-
-
-
-}

+ 0 - 18
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/SysAppMapper.java

@@ -1,18 +0,0 @@
-package com.gis.mapper;
-
-
-import com.gis.domain.entity.SysAppEntity;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-
-@Component
-@Mapper
-public interface SysAppMapper extends IBaseMapper<SysAppEntity, Long> {
-
-    @Select("select type from sys_app where is_delete=0 and app_id=#{appId}")
-    List<String> findByType(String appId);
-}

+ 0 - 94
720yun_fd_manage/gis_service/src/main/java/com/gis/config/WebMvcConfig.java

@@ -1,94 +0,0 @@
-package com.gis.config;
-
-import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.alibaba.fastjson.support.config.FastJsonConfig;
-import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-import com.gis.common.config.CommonInterceptor;
-import com.gis.common.constant.ConfigConstant;
-import com.gis.filter.ApiInterceptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by owen on 2020/2/18 0018 12:01
- */
-@Configuration
-public class WebMvcConfig implements WebMvcConfigurer {
-
-    @Autowired
-    private CommonInterceptor commonInterceptor;
-
-    @Autowired
-    ApiInterceptor apiInterceptor;
-
-    @Autowired
-    ConfigConstant configConstant;
-
-    /**
-     * 配置全局跨域
-     * 开发、测试环境开启跨域, 正式环境不开启
-     */
-    @Override
-    public void addCorsMappings(CorsRegistry registry) {
-        String active = configConstant.active;
-        if ("dev".equals(active) || "sit".equals(active)){
-            registry.addMapping("/**")
-                    .allowedOrigins("*")
-                    .allowCredentials(true)
-                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
-                    .maxAge(3600);
-        }
-
-    }
-
-
-    /**
-     * 添加拦截器
-     */
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
-        registry.addInterceptor(apiInterceptor).addPathPatterns("/api/**");
-    }
-
-
-    /**
-     * fastJson相关设置
-     * Dto包含json,需要配置不然会异常
-     * @return
-     */
-    @Bean
-    public HttpMessageConverters customConverters() {
-
-        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
-        // 创建FastJson信息转换对象
-        FastJsonConfig fastJsonConfig = new FastJsonConfig();
-
-
-        // 设置全程返回时间
-        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm");
-        // 设置返回值为null是时输出,不写的话,null 字段 不返回。也可以设置返回空串, 可以同时设置多个
-        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-
-        fastJson.setFastJsonConfig(fastJsonConfig);
-
-        //3、中文乱码解决方案
-        List<MediaType> mediaTypeList = new ArrayList<>();
-        mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
-        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
-
-        //4、将转换规则应用于转换对象
-        fastJson.setSupportedMediaTypes(mediaTypeList);
-
-        return new HttpMessageConverters(fastJson);
-    }
-}

+ 0 - 16
720yun_fd_manage/gis_service/src/main/java/com/gis/service/SysAppService.java

@@ -1,16 +0,0 @@
-package com.gis.service;
-
-
-import com.gis.domain.entity.SysAppEntity;
-
-import java.util.List;
-
-
-/**
- * Created by owen on 2020/3/11 0011 16:14
- */
-public interface SysAppService extends IBaseService<SysAppEntity, Long> {
-
-
-    List<String> findByType(String appId);
-}

+ 0 - 35
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/SysAppServiceImpl.java

@@ -1,35 +0,0 @@
-package com.gis.service.impl;
-
-import com.gis.domain.entity.SysAppEntity;
-import com.gis.domain.entity.SysUserEntity;
-import com.gis.mapper.IBaseMapper;
-import com.gis.mapper.SysAppMapper;
-import com.gis.mapper.SysUserMapper;
-import com.gis.service.SysAppService;
-import com.gis.service.SysUserService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-
-/**
- * Created by owen on 2020/3/11 0011 16:16
- */
-@Service
-public class SysAppServiceImpl extends IBaseServiceImpl<SysAppEntity, Long> implements SysAppService {
-
-    @Autowired
-    private SysAppMapper entityMapper;
-
-    @Override
-    public IBaseMapper<SysAppEntity, Long> getBaseMapper() {
-        return this.entityMapper;
-    }
-
-
-    @Override
-    public List<String> findByType(String appId) {
-        return entityMapper.findByType(appId);
-    }
-}

+ 0 - 1
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/AgeController.java

@@ -1,6 +1,5 @@
 package com.gis.web.controller;
 
-import com.gis.common.exception.BaseRuntimeException;
 import com.gis.common.service.IBaseService;
 import com.gis.common.util.Result;
 import com.gis.domain.dto.PageDto;