Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
app-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SuperHive
back-end
app-service
Commits
47c747e0
Commit
47c747e0
authored
Apr 23, 2020
by
huangcb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加AuthFilter过滤器
parent
00717d86
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
164 additions
and
53 deletions
+164
-53
pom.xml
pom.xml
+11
-12
AppApplication.java
src/main/java/com/esv/freight/app/AppApplication.java
+8
-0
AuthFilter.java
...in/java/com/esv/freight/app/common/filter/AuthFilter.java
+95
-0
LogbackFilter.java
...java/com/esv/freight/app/common/filter/LogbackFilter.java
+4
-1
RestLogFilter.java
...java/com/esv/freight/app/common/filter/RestLogFilter.java
+13
-3
EResponse.java
...n/java/com/esv/freight/app/common/response/EResponse.java
+18
-2
FeignInterceptorConfig.java
...va/com/esv/freight/app/config/FeignInterceptorConfig.java
+0
-35
LogFilterConfig.java
...main/java/com/esv/freight/app/config/LogFilterConfig.java
+15
-0
No files found.
pom.xml
View file @
47c747e0
...
@@ -144,7 +144,7 @@
...
@@ -144,7 +144,7 @@
<groupId>
org.apache.maven.plugins
</groupId>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<artifactId>
maven-surefire-plugin
</artifactId>
<configuration>
<configuration>
<skipTests>
fals
e
</skipTests>
<skipTests>
tru
e
</skipTests>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
...
@@ -153,6 +153,15 @@
...
@@ -153,6 +153,15 @@
<profile>
<profile>
<id>
release
</id>
<id>
release
</id>
<build>
<build>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<configuration>
<skipTests>
true
</skipTests>
</configuration>
</plugin>
</plugins>
<resources>
<resources>
<resource>
<resource>
<directory>
src/main/resources
</directory>
<directory>
src/main/resources
</directory>
...
@@ -170,6 +179,7 @@
...
@@ -170,6 +179,7 @@
</profiles>
</profiles>
<build>
<build>
<finalName>
freight-app-service
</finalName>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
...
@@ -192,17 +202,6 @@
...
@@ -192,17 +202,6 @@
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
<resources>
<resource>
<directory>
src/main/resources
</directory>
<includes>
<include>
**/*.*
</include>
</includes>
<excludes>
</excludes>
<filtering>
true
</filtering>
</resource>
</resources>
</build>
</build>
</project>
</project>
src/main/java/com/esv/freight/app/AppApplication.java
View file @
47c747e0
...
@@ -6,6 +6,9 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
...
@@ -6,6 +6,9 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.web.context.request.RequestContextListener
;
import
org.springframework.web.context.request.RequestContextListener
;
import
javax.annotation.PostConstruct
;
import
java.util.TimeZone
;
/**
/**
* @description: 启动类
* @description: 启动类
* @project: Spring-Cloud-Single-Template
* @project: Spring-Cloud-Single-Template
...
@@ -27,4 +30,9 @@ public class AppApplication {
...
@@ -27,4 +30,9 @@ public class AppApplication {
public
RequestContextListener
requestContextListener
(){
public
RequestContextListener
requestContextListener
(){
return
new
RequestContextListener
();
return
new
RequestContextListener
();
}
}
@PostConstruct
void
setDefaultTimezone
()
{
TimeZone
.
setDefault
(
TimeZone
.
getTimeZone
(
"Asia/Shanghai"
));
}
}
}
src/main/java/com/esv/freight/app/common/filter/AuthFilter.java
0 → 100644
View file @
47c747e0
package
com
.
esv
.
freight
.
app
.
common
.
filter
;
import
com.esv.freight.app.common.response.ECode
;
import
com.esv.freight.app.common.response.EResponse
;
import
com.esv.freight.app.common.util.AESSecretUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cloud.context.config.annotation.RefreshScope
;
import
javax.servlet.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.OutputStreamWriter
;
import
java.io.PrintWriter
;
/**
* @description: 权限过滤器
* @project: app-service
* @name: com.esv.freight.app.common.filter.AuthFilter
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/23 15:02
* @version:1.0
*/
@Slf4j
@RefreshScope
public
class
AuthFilter
implements
Filter
{
@Value
(
"${aes.sha1prng.key:freight-app-service-001}"
)
private
String
AES_KEY
;
@Override
public
void
init
(
FilterConfig
filterConfig
)
throws
ServletException
{
}
@Override
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
/************************ Token加解密示例 ************************/
log
.
info
(
AES_KEY
);
String
tokenTest
=
"1,13912345678,sn001,"
+
System
.
currentTimeMillis
();
String
accessTokenTest
=
AESSecretUtils
.
encryptToStr
(
tokenTest
,
AES_KEY
);
log
.
info
(
tokenTest
);
log
.
info
(
accessTokenTest
);
log
.
info
(
AESSecretUtils
.
decryptToStr
(
accessTokenTest
,
AES_KEY
));
/************************ Token加解密示例 ************************/
HttpServletRequest
request
=
(
HttpServletRequest
)
servletRequest
;
HttpServletResponse
response
=
(
HttpServletResponse
)
servletResponse
;
String
accessToken
=
request
.
getHeader
(
"Union-Authorization"
);
if
(
StringUtils
.
isBlank
(
accessToken
))
{
this
.
errorResponse
(
EResponse
.
error
(
ECode
.
TOKEN_INVALID
),
response
);
return
;
}
else
{
// 解析并校验Token
}
filterChain
.
doFilter
(
servletRequest
,
servletResponse
);
}
@Override
public
void
destroy
()
{
}
private
void
errorResponse
(
EResponse
eResponse
,
HttpServletResponse
response
)
{
response
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"application/json; charset=utf-8"
);
OutputStreamWriter
osw
=
null
;
PrintWriter
writer
=
null
;
try
{
osw
=
new
OutputStreamWriter
(
response
.
getOutputStream
(),
"UTF-8"
);
writer
=
new
PrintWriter
(
osw
,
true
);
writer
.
write
(
eResponse
.
toString
());
writer
.
flush
();
osw
.
close
();
}
catch
(
IOException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
finally
{
if
(
null
!=
writer
)
{
writer
.
close
();
}
if
(
null
!=
osw
)
{
try
{
osw
.
close
();
}
catch
(
IOException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
}
src/main/java/com/esv/freight/app/common/filter/LogbackFilter.java
View file @
47c747e0
...
@@ -30,7 +30,10 @@ public class LogbackFilter implements Filter {
...
@@ -30,7 +30,10 @@ public class LogbackFilter implements Filter {
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
// 获取来自上游服务的传参traceId
// 获取来自上游服务的传参traceId
HttpServletRequest
httpServletRequest
=
(
HttpServletRequest
)
servletRequest
;
HttpServletRequest
httpServletRequest
=
(
HttpServletRequest
)
servletRequest
;
String
traceId
=
httpServletRequest
.
getHeader
(
"trace_id"
);
String
traceId
=
httpServletRequest
.
getHeader
(
"gateway_traceid"
);
if
(
StringUtils
.
isBlank
(
traceId
))
{
traceId
=
httpServletRequest
.
getHeader
(
"trace_id"
);
}
boolean
bInsertMDC
=
setMDC
(
traceId
);
boolean
bInsertMDC
=
setMDC
(
traceId
);
try
{
try
{
filterChain
.
doFilter
(
servletRequest
,
servletResponse
);
filterChain
.
doFilter
(
servletRequest
,
servletResponse
);
...
...
src/main/java/com/esv/freight/app/common/filter/RestLogFilter.java
View file @
47c747e0
package
com
.
esv
.
freight
.
app
.
common
.
filter
;
package
com
.
esv
.
freight
.
app
.
common
.
filter
;
import
com.alibaba.fastjson.JSONObject
;
import
com.esv.freight.app.common.wrapper.RestRequestWrapper
;
import
com.esv.freight.app.common.wrapper.RestRequestWrapper
;
import
com.esv.freight.app.common.wrapper.RestResponseWrapper
;
import
com.esv.freight.app.common.wrapper.RestResponseWrapper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -40,12 +41,11 @@ public class RestLogFilter implements Filter {
...
@@ -40,12 +41,11 @@ public class RestLogFilter implements Filter {
RestResponseWrapper
responseWrapper
=
new
RestResponseWrapper
((
HttpServletResponse
)
servletResponse
);
RestResponseWrapper
responseWrapper
=
new
RestResponseWrapper
((
HttpServletResponse
)
servletResponse
);
String
reqContentType
=
StringUtils
.
trimToEmpty
(
requestWrapper
.
getContentType
()).
toLowerCase
();
String
reqContentType
=
StringUtils
.
trimToEmpty
(
requestWrapper
.
getContentType
()).
toLowerCase
();
if
(
reqContentType
.
contains
(
"multipart/form-data"
))
{
if
(!
reqContentType
.
contains
(
"multipart/form-data"
))
{
log
.
info
(
"multipart/form-data request"
);
}
else
{
// 日志输出请求
// 日志输出请求
logReq
(
requestWrapper
);
logReq
(
requestWrapper
);
}
}
logReqHeader
(
requestWrapper
);
filterChain
.
doFilter
(
requestWrapper
,
responseWrapper
);
filterChain
.
doFilter
(
requestWrapper
,
responseWrapper
);
...
@@ -138,6 +138,16 @@ public class RestLogFilter implements Filter {
...
@@ -138,6 +138,16 @@ public class RestLogFilter implements Filter {
}
}
}
}
private
void
logReqHeader
(
RestRequestWrapper
request
)
{
JSONObject
headerJson
=
new
JSONObject
();
Enumeration
headerNames
=
request
.
getHeaderNames
();
while
(
headerNames
.
hasMoreElements
())
{
String
key
=
(
String
)
headerNames
.
nextElement
();
headerJson
.
put
(
key
,
request
.
getHeader
(
key
));
}
log
.
info
(
"请求头:{}"
,
headerJson
.
toJSONString
());
}
private
void
logRes
(
RestRequestWrapper
requestWrapper
,
RestResponseWrapper
responseWrapper
)
throws
Exception
{
private
void
logRes
(
RestRequestWrapper
requestWrapper
,
RestResponseWrapper
responseWrapper
)
throws
Exception
{
byte
[]
bytes
=
responseWrapper
.
getBody
();
byte
[]
bytes
=
responseWrapper
.
getBody
();
String
resStr
=
new
String
(
bytes
,
"utf-8"
);
String
resStr
=
new
String
(
bytes
,
"utf-8"
);
...
...
src/main/java/com/esv/freight/app/common/response/EResponse.java
View file @
47c747e0
...
@@ -123,18 +123,34 @@ public class EResponse<T> implements Serializable {
...
@@ -123,18 +123,34 @@ public class EResponse<T> implements Serializable {
}
}
public
int
getCode
()
{
public
int
getCode
()
{
return
this
.
code
;
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
}
public
String
getMessage
()
{
public
String
getMessage
()
{
return
message
;
return
message
;
}
}
public
long
getTime
()
{
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
long
getResponseTime
()
{
return
responseTime
;
return
responseTime
;
}
}
public
void
setResponseTime
(
long
responseTime
)
{
this
.
responseTime
=
responseTime
;
}
public
T
getData
()
{
public
T
getData
()
{
return
data
;
return
data
;
}
}
public
void
setData
(
T
data
)
{
this
.
data
=
data
;
}
}
}
\ No newline at end of file
src/main/java/com/esv/freight/app/config/FeignInterceptorConfig.java
deleted
100644 → 0
View file @
00717d86
package
com
.
esv
.
freight
.
app
.
config
;
import
feign.RequestInterceptor
;
import
feign.RequestTemplate
;
import
org.slf4j.MDC
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
/**
* @description: 注册Feign请求拦截器
* @project: Spring-Cloud-Single-Template
* @name: com.esv.freight.config.FeignInterceptorConfig
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/09 9:58
* @version:1.0
*/
public
class
FeignInterceptorConfig
{
@Value
(
"${spring.application.name}"
)
private
String
applicationName
;
@Bean
public
RequestInterceptor
requestInterceptor
(){
return
new
FeignRequestInterceptor
();
}
class
FeignRequestInterceptor
implements
RequestInterceptor
{
@Override
public
void
apply
(
RequestTemplate
requestTemplate
)
{
requestTemplate
.
header
(
"trace_id"
,
MDC
.
get
(
"traceId"
));
requestTemplate
.
header
(
"application_name"
,
applicationName
);
}
}
}
src/main/java/com/esv/freight/app/config/LogFilterConfig.java
View file @
47c747e0
package
com
.
esv
.
freight
.
app
.
config
;
package
com
.
esv
.
freight
.
app
.
config
;
import
com.esv.freight.app.common.filter.AuthFilter
;
import
com.esv.freight.app.common.filter.LogbackFilter
;
import
com.esv.freight.app.common.filter.LogbackFilter
;
import
com.esv.freight.app.common.filter.RestLogFilter
;
import
com.esv.freight.app.common.filter.RestLogFilter
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
...
@@ -37,4 +38,18 @@ public class LogFilterConfig {
...
@@ -37,4 +38,18 @@ public class LogFilterConfig {
filterRegistrationBean
.
setOrder
(
Integer
.
MIN_VALUE
+
1
);
filterRegistrationBean
.
setOrder
(
Integer
.
MIN_VALUE
+
1
);
return
filterRegistrationBean
;
return
filterRegistrationBean
;
}
}
@Bean
public
AuthFilter
getAuthFilter
()
{
return
new
AuthFilter
();
}
@Bean
public
FilterRegistrationBean
<
AuthFilter
>
authFilterRegister
()
{
FilterRegistrationBean
<
AuthFilter
>
filterRegistrationBean
=
new
FilterRegistrationBean
<>();
filterRegistrationBean
.
setFilter
(
getAuthFilter
());
filterRegistrationBean
.
addUrlPatterns
(
URL
);
filterRegistrationBean
.
setOrder
(
Integer
.
MIN_VALUE
+
2
);
return
filterRegistrationBean
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment