张延森 2 vuotta sitten
vanhempi
commit
903085516e

+ 1
- 1
deploy/.s/1636896505560465-cn-shanghai-stategrid-service-invoice-filling-httpTrigger.json Näytä tiedosto

@@ -21,7 +21,7 @@
21 21
       "authType": "anonymous"
22 22
     },
23 23
     "createdTime": "2022-07-18T02:02:16Z",
24
-    "lastModifiedTime": "2022-07-18T02:03:46Z",
24
+    "lastModifiedTime": "2022-07-18T07:56:57Z",
25 25
     "name": "httpTrigger"
26 26
   }
27 27
 }

+ 3
- 3
deploy/.s/1636896505560465-cn-shanghai-stategrid-service-invoice-filling.json Näytä tiedosto

@@ -8,13 +8,13 @@
8 8
     "timeout": 30,
9 9
     "initializer": "",
10 10
     "initializationTimeout": 3,
11
-    "codeSize": 69213899,
12
-    "codeChecksum": "3724623036147462201",
11
+    "codeSize": 69219873,
12
+    "codeChecksum": "8933832746482495729",
13 13
     "memorySize": 1024,
14 14
     "gpuMemorySize": null,
15 15
     "environmentVariables": {},
16 16
     "createdTime": "2022-07-18T02:02:16Z",
17
-    "lastModifiedTime": "2022-07-18T02:03:42Z",
17
+    "lastModifiedTime": "2022-07-18T07:56:50Z",
18 18
     "instanceConcurrency": 1,
19 19
     "instanceSoftConcurrency": null,
20 20
     "customContainerConfig": null,

+ 1
- 1
deploy/.s/1636896505560465-cn-shanghai-stategrid-service.json Näytä tiedosto

@@ -12,7 +12,7 @@
12 12
     },
13 13
     "serviceId": "6e96fa7b-9988-4908-b06a-0aa7e510c881",
14 14
     "createdTime": "2022-02-26T04:50:56Z",
15
-    "lastModifiedTime": "2022-07-18T02:03:46Z",
15
+    "lastModifiedTime": "2022-07-18T07:56:57Z",
16 16
     "vpcConfig": {
17 17
       "vpcId": "",
18 18
       "vSwitchIds": [],

+ 1
- 1
deploy/.s/invoice-filling.stategrid.njyunzhi.com.json Näytä tiedosto

@@ -33,5 +33,5 @@
33 33
     ]
34 34
   },
35 35
   "createdTime": "2022-07-18T02:03:47Z",
36
-  "lastModifiedTime": "2022-07-18T02:03:47Z"
36
+  "lastModifiedTime": "2022-07-18T07:56:57Z"
37 37
 }

+ 14
- 0
src/main/java/com/njyunzhi/invoice/config/FilterConfig.java Näytä tiedosto

@@ -0,0 +1,14 @@
1
+package com.njyunzhi.invoice.config;
2
+
3
+import lombok.Data;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.stereotype.Component;
6
+
7
+import java.util.List;
8
+
9
+@Data
10
+@Component
11
+@ConfigurationProperties(prefix = "yz.filter")
12
+public class FilterConfig {
13
+    List<String> annList;
14
+}

+ 31
- 28
src/main/java/com/njyunzhi/invoice/config/SaTokenConfigure.java Näytä tiedosto

@@ -1,39 +1,42 @@
1 1
 package com.njyunzhi.invoice.config;
2 2
 
3
-import cn.dev33.satoken.interceptor.SaRouteInterceptor;
3
+import cn.dev33.satoken.context.SaHolder;
4
+import cn.dev33.satoken.filter.SaServletFilter;
4 5
 import cn.dev33.satoken.jwt.StpLogicJwtForStateless;
6
+import cn.dev33.satoken.router.SaHttpMethod;
7
+import cn.dev33.satoken.router.SaRouter;
5 8
 import cn.dev33.satoken.stp.StpLogic;
9
+import cn.dev33.satoken.stp.StpUtil;
10
+import com.alibaba.fastjson.JSONObject;
11
+import com.njyunzhi.invoice.common.ResponseBean;
12
+import org.springframework.beans.factory.annotation.Autowired;
6 13
 import org.springframework.context.annotation.Bean;
7 14
 import org.springframework.context.annotation.Configuration;
8
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
9
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
10
-
11
-import java.util.ArrayList;
12
-import java.util.List;
13 15
 
14 16
 @Configuration
15
-public class SaTokenConfigure implements WebMvcConfigurer {
16
-
17
-    // 注册拦截器
18
-    @Override
19
-    public void addInterceptors(InterceptorRegistry registry) {
20
-
21
-        List<String> anonList = new ArrayList<>();
22
-        anonList.add("/swagger-ui/**");
23
-        anonList.add("/swagger-resources/**");
24
-        anonList.add("/v2/**");
25
-        anonList.add("/wxpay/notify/**");
26
-        anonList.add("/alipay/notify/**");
27
-        anonList.add("/**/sms-captcha");
28
-        anonList.add("/**/**/sms-captcha");
29
-        anonList.add("/**/preload");
30
-        anonList.add("/**/login");
31
-        anonList.add("/**/**/login");
32
-
33
-        // 注册Sa-Token的路由拦截器
34
-        registry.addInterceptor(new SaRouteInterceptor())
35
-                .addPathPatterns("/**")
36
-                .excludePathPatterns(anonList.toArray(new String[0]));
17
+public class SaTokenConfigure {
18
+
19
+    @Autowired
20
+    FilterConfig filterConfig;
21
+
22
+    @Bean
23
+    public SaServletFilter getSaServletFilter() {
24
+        SaServletFilter saServletFilter = new SaServletFilter();
25
+        saServletFilter.addInclude("/**");
26
+        saServletFilter.addExclude(filterConfig.getAnnList().toArray(new String[0]));
27
+        saServletFilter.setAuth(auth -> {
28
+            // OPTIONS 请求不校验, 主要是为了解决跨域问题
29
+            SaRouter.notMatch(SaHttpMethod.OPTIONS).check(r -> StpUtil.checkLogin());
30
+        });
31
+
32
+        saServletFilter.setError(err -> {
33
+            SaHolder.getResponse().setHeader("Content-Type", "application/json;charset=UTF-8");
34
+            SaHolder.getResponse().setStatus(200);
35
+            String jsonStr = JSONObject.toJSONString(ResponseBean.error(err.getMessage()));
36
+            return jsonStr;
37
+        });
38
+
39
+        return saServletFilter;
37 40
     }
38 41
 
39 42
 

+ 38
- 0
src/main/java/com/njyunzhi/invoice/config/cros/CorsConfig.java Näytä tiedosto

@@ -0,0 +1,38 @@
1
+package com.njyunzhi.invoice.config.cros;
2
+
3
+import org.springframework.beans.factory.annotation.Autowired;
4
+import org.springframework.boot.SpringBootConfiguration;
5
+import org.springframework.web.servlet.config.annotation.CorsRegistration;
6
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
7
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
8
+
9
+import java.util.List;
10
+
11
+@SpringBootConfiguration
12
+public class CorsConfig implements WebMvcConfigurer {
13
+
14
+    @Autowired
15
+    CorsProperties crosProperties;
16
+
17
+    @Override
18
+    public void addCorsMappings(CorsRegistry registry) {
19
+        if (null == crosProperties.getEnabled() || !crosProperties.getEnabled()) return;
20
+
21
+//        //添加映射路径
22
+        CorsRegistration registration = registry.addMapping("/**");
23
+        //是否发送Cookie
24
+//        registration.allowCredentials(true);
25
+        // 域名
26
+        registration.allowedOrigins(toArray(crosProperties.getOrigins()));
27
+        //放行哪些请求方式
28
+        registration.allowedMethods(toArray(crosProperties.getMethods()));
29
+        //放行哪些原始请求头部信息
30
+        registration.allowedHeaders("*");
31
+        //暴露哪些原始请求头部信息
32
+        registration.exposedHeaders(toArray(crosProperties.getExposedHeaders()));
33
+    }
34
+
35
+    private String[] toArray(List<String> list) {
36
+        return list.toArray(new String[0]);
37
+    }
38
+}

+ 17
- 0
src/main/java/com/njyunzhi/invoice/config/cros/CorsProperties.java Näytä tiedosto

@@ -0,0 +1,17 @@
1
+package com.njyunzhi.invoice.config.cros;
2
+
3
+import lombok.Data;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.stereotype.Component;
6
+
7
+import java.util.List;
8
+
9
+@Data
10
+@Component
11
+@ConfigurationProperties(prefix = "cors")
12
+public class CorsProperties {
13
+    Boolean enabled;
14
+    List<String> origins;
15
+    List<String> methods;
16
+    List<String> exposedHeaders;
17
+}

+ 19
- 0
src/main/java/com/njyunzhi/invoice/exception/ErrorHandle.java Näytä tiedosto

@@ -0,0 +1,19 @@
1
+package com.njyunzhi.invoice.exception;
2
+
3
+import com.njyunzhi.invoice.common.ResponseBean;
4
+import org.springframework.boot.web.servlet.error.ErrorController;
5
+import org.springframework.web.bind.annotation.RequestMapping;
6
+import org.springframework.web.bind.annotation.RestController;
7
+
8
+import javax.servlet.http.HttpServletRequest;
9
+import javax.servlet.http.HttpServletResponse;
10
+import java.io.IOException;
11
+
12
+@RestController
13
+public class ErrorHandle implements ErrorController {
14
+    @RequestMapping("/error")
15
+    public ResponseBean error(HttpServletRequest request, HttpServletResponse response) throws IOException {
16
+        response.setStatus(200);
17
+        return ResponseBean.error("系统错误");
18
+    }
19
+}

+ 1
- 1
src/main/java/com/njyunzhi/invoice/exception/GlobalExceptionHandler.java Näytä tiedosto

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
12 12
 public class GlobalExceptionHandler {
13 13
 
14 14
     @ResponseBody
15
-    @ExceptionHandler(Exception.class)
15
+    @ExceptionHandler
16 16
     public ResponseBean handleException(Exception e){
17 17
         e.printStackTrace();
18 18
 

+ 15
- 0
src/main/resources/application-dev.yml Näytä tiedosto

@@ -21,3 +21,18 @@ wx:
21 21
         secret: 1111 # 公众号的appsecret
22 22
         token: 111 # 接口配置里的Token值
23 23
         aesKey: 111 # 接口配置里的EncodingAESKey值
24
+
25
+### 跨域
26
+cors:
27
+  enabled: true
28
+  origins:
29
+    - "http://localhost:8000"
30
+  exposedHeaders:
31
+    - Authorization
32
+    - Content-Disposition
33
+  methods:
34
+    - GET
35
+    - POST
36
+    - PUT
37
+    - DELETE
38
+    - OPTIONS

+ 16
- 0
src/main/resources/application-prod.yml Näytä tiedosto

@@ -7,3 +7,19 @@ spring:
7 7
     url: jdbc:mysql://rm-uf6z3z6jq11x653d77o.mysql.rds.aliyuncs.com:3306/invoice_fill?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
8 8
     username: invoice_fill
9 9
     password: invoice_fill@ABCD1234
10
+
11
+### 跨域
12
+cors:
13
+  enabled: true
14
+  origins:
15
+    - http://h5.njyunzhi.com
16
+    - https://h5.njyunzhi.com
17
+  exposedHeaders:
18
+    - Authorization
19
+    - Content-Disposition
20
+  methods:
21
+    - GET
22
+    - POST
23
+    - PUT
24
+    - DELETE
25
+    - OPTIONS

+ 6
- 0
src/main/resources/application.yml Näytä tiedosto

@@ -16,6 +16,12 @@ logging:
16 16
 yz:
17 17
   mp:
18 18
     openidAPI: https://api.h5.njyunzhi.com/mp/openid?code=%s
19
+  filter:
20
+    annList:
21
+      - "/swagger-ui/**"
22
+      - "/swagger-resources/**"
23
+      - "/v2/**"
24
+      - "/**/login"
19 25
 
20 26
 ###
21 27
 mybatis-plus: