my-csc-config-file.git 5 år sedan
förälder
incheckning
d4b5fb7737

+ 13 - 0
pom.xml

@@ -73,6 +73,19 @@
73
             <groupId>org.springframework.cloud</groupId>
73
             <groupId>org.springframework.cloud</groupId>
74
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
74
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
75
         </dependency>
75
         </dependency>
76
+
77
+        <!--使用security-jwt-->
78
+        <dependency>
79
+            <groupId>org.springframework.security</groupId>
80
+            <artifactId>spring-security-jwt</artifactId>
81
+        </dependency>
82
+
83
+        <!--jwt解析相关-->
84
+        <dependency>
85
+            <groupId>io.jsonwebtoken</groupId>
86
+            <artifactId>jjwt</artifactId>
87
+            <version>0.9.1</version>
88
+        </dependency>
76
     </dependencies>
89
     </dependencies>
77
 
90
 
78
     <build>
91
     <build>

+ 3 - 0
src/main/java/com/unissoft/constant/ContentType.java

@@ -13,6 +13,9 @@ public class ContentType {
13
 
13
 
14
     public static String REDIS_LOGS = "logs";
14
     public static String REDIS_LOGS = "logs";
15
 
15
 
16
+    //请求认证头
17
+    public static final String AUTHORIZATION = "Authorization";
18
+
16
     static Map<String, String> CONTENT_TYPE = new HashMap<>();
19
     static Map<String, String> CONTENT_TYPE = new HashMap<>();
17
 
20
 
18
     static Map<String, String> FILE_CONTENT_TYPE = new HashMap<>();
21
     static Map<String, String> FILE_CONTENT_TYPE = new HashMap<>();

+ 26 - 16
src/main/java/com/unissoft/filter/RequestLogFilter.java

@@ -1,12 +1,15 @@
1
 package com.unissoft.filter;
1
 package com.unissoft.filter;
2
 
2
 
3
 
3
 
4
+import com.alibaba.fastjson.JSON;
5
+import com.alibaba.fastjson.JSONObject;
4
 import com.google.common.collect.Lists;
6
 import com.google.common.collect.Lists;
5
 import com.unissoft.constant.ContentType;
7
 import com.unissoft.constant.ContentType;
6
 import com.unissoft.constant.HeaderConstant;
8
 import com.unissoft.constant.HeaderConstant;
7
 import com.unissoft.constant.OrderedConstant;
9
 import com.unissoft.constant.OrderedConstant;
8
 import com.unissoft.log.LogHelper;
10
 import com.unissoft.log.LogHelper;
9
 import com.unissoft.model.Log;
11
 import com.unissoft.model.Log;
12
+import com.unissoft.model.SysUserPO;
10
 import com.unissoft.utils.GenerateIdUtils;
13
 import com.unissoft.utils.GenerateIdUtils;
11
 import com.unissoft.utils.IpUtils;
14
 import com.unissoft.utils.IpUtils;
12
 import com.unissoft.utils.RedisUtil;
15
 import com.unissoft.utils.RedisUtil;
@@ -23,6 +26,8 @@ import org.springframework.http.HttpHeaders;
23
 import org.springframework.http.MediaType;
26
 import org.springframework.http.MediaType;
24
 import org.springframework.http.server.reactive.ServerHttpRequest;
27
 import org.springframework.http.server.reactive.ServerHttpRequest;
25
 import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
28
 import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
29
+import org.springframework.security.jwt.Jwt;
30
+import org.springframework.security.jwt.JwtHelper;
26
 import org.springframework.stereotype.Component;
31
 import org.springframework.stereotype.Component;
27
 import org.springframework.util.StopWatch;
32
 import org.springframework.util.StopWatch;
28
 import org.springframework.web.reactive.function.server.HandlerStrategies;
33
 import org.springframework.web.reactive.function.server.HandlerStrategies;
@@ -32,10 +37,7 @@ import reactor.core.publisher.Flux;
32
 import reactor.core.publisher.Mono;
37
 import reactor.core.publisher.Mono;
33
 
38
 
34
 import java.net.URI;
39
 import java.net.URI;
35
-import java.util.ArrayList;
36
-import java.util.Date;
37
-import java.util.List;
38
-import java.util.Objects;
40
+import java.util.*;
39
 import java.util.concurrent.atomic.AtomicBoolean;
41
 import java.util.concurrent.atomic.AtomicBoolean;
40
 import java.util.concurrent.atomic.AtomicReference;
42
 import java.util.concurrent.atomic.AtomicReference;
41
 import java.util.function.Consumer;
43
 import java.util.function.Consumer;
@@ -96,20 +98,27 @@ public class RequestLogFilter implements GlobalFilter, Ordered {
96
                     newBody.set(true);
98
                     newBody.set(true);
97
                 }
99
                 }
98
             }
100
             }
99
-            final Log logDTO = new Log();
100
-            logDTO.setLevel(Log.LEVEL.INFO);
101
-            logDTO.setRequestUrl(url);
102
-            logDTO.setRequestBody(requestBody.get());
103
-            logDTO.setRequestMethod(method);
104
-            logDTO.setRequestId(requestId.get());
105
-            logDTO.setIp(IpUtils.getClientIp(request));
106
-            logDTO.setCreateTime(new Date());
101
+
102
+            //获取当前操作用户名字
103
+            String userName = null;
104
+            if (request.getHeaders().get(ContentType.AUTHORIZATION) != null) {
105
+                String authorization = request.getHeaders().get(ContentType.AUTHORIZATION).get(0).replace("bearer ","");;
106
+                Jwt decode = JwtHelper.decode(authorization);
107
+                String claims = decode.getClaims();
108
+                JSONObject jsonObject = JSON.parseObject(claims);
109
+                Map<String, String> jsonMap = JSONObject.toJavaObject(jsonObject, Map.class);
110
+                JSONObject user = JSON.parseObject(jsonMap.get("user_name"));
111
+                userName = JSONObject.toJavaObject(user, SysUserPO.class).getPersonnelName();
112
+            }
113
+
114
+//            final Log logDTO = new Log();
115
+            Log logDTO = new Log(Log.LEVEL.INFO, IpUtils.getClientIp(request), url, userName, requestBody.get(), requestId.get(), method, new Date());
107
             //存入redis
116
             //存入redis
108
-            List<Object> logs = Lists.newArrayList();
109
-            logs.add(logDTO);
117
+            List<Object> logs = Lists.newArrayList(JSON.toJSONString(logDTO));
118
+
110
             redisUtil.lSetList(ContentType.REDIS_LOGS, logs);
119
             redisUtil.lSetList(ContentType.REDIS_LOGS, logs);
111
 
120
 
112
-            ServerHttpRequest serverHttpRequest = exchange.getRequest().mutate().headers(httpHeadersConsumer).build();
121
+           /* ServerHttpRequest serverHttpRequest = exchange.getRequest().mutate().headers(httpHeadersConsumer).build();
113
             ServerWebExchange build = exchange.mutate().request(serverHttpRequest).build();
122
             ServerWebExchange build = exchange.mutate().request(serverHttpRequest).build();
114
             return build.getSession().flatMap(webSession -> {
123
             return build.getSession().flatMap(webSession -> {
115
                 logDTO.setSessionId(webSession.getId());
124
                 logDTO.setSessionId(webSession.getId());
@@ -133,7 +142,8 @@ public class RequestLogFilter implements GlobalFilter, Ordered {
133
                 } else {
142
                 } else {
134
                     return chain.filter(exchange).then(LogHelper.doRecord(logDTO));
143
                     return chain.filter(exchange).then(LogHelper.doRecord(logDTO));
135
                 }
144
                 }
136
-            });
145
+            });*/
146
+            return chain.filter(exchange).then(LogHelper.doRecord(logDTO));
137
         } catch (Exception e) {
147
         } catch (Exception e) {
138
             log.error("请求日志打印出现异常", e);
148
             log.error("请求日志打印出现异常", e);
139
             return chain.filter(exchange);
149
             return chain.filter(exchange);

+ 11 - 0
src/main/java/com/unissoft/model/Log.java

@@ -51,6 +51,17 @@ public class Log {
51
         this(Log.TYPE.REQUEST);
51
         this(Log.TYPE.REQUEST);
52
     }
52
     }
53
 
53
 
54
+    public Log(LEVEL level, String ip, String requestUrl, String userName, String requestBody, String requestId, String requestMethod, Date createTime) {
55
+        this.level = level;
56
+        this.ip = ip;
57
+        this.requestUrl = requestUrl;
58
+        this.userName = userName;
59
+        this.requestBody = requestBody;
60
+        this.requestId = requestId;
61
+        this.requestMethod = requestMethod;
62
+        this.createTime = createTime;
63
+    }
64
+
54
     public Log(Log.TYPE logType) {
65
     public Log(Log.TYPE logType) {
55
         this.logType = logType;
66
         this.logType = logType;
56
         this.applicationName = EnvironmentUtils.getAppEnv();
67
         this.applicationName = EnvironmentUtils.getAppEnv();