Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
szpt
Project overview
Project overview
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
以墨为白
szpt
Commits
60aca3dc
Commit
60aca3dc
authored
Jan 10, 2025
by
以墨为白
🎧
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
5bea093f
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
102 additions
and
22 deletions
+102
-22
src/main/java/com/zksy/szpt/aspect/RequestBodyAnalysis.java
src/main/java/com/zksy/szpt/aspect/RequestBodyAnalysis.java
+63
-0
src/main/java/com/zksy/szpt/config/WebConfig.java
src/main/java/com/zksy/szpt/config/WebConfig.java
+13
-0
src/main/java/com/zksy/szpt/domain/CurrentUserInfo.java
src/main/java/com/zksy/szpt/domain/CurrentUserInfo.java
+0
-3
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter.java
...ava/com/zksy/szpt/filter/SignatureVerificationFilter.java
+0
-4
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter1.java
...va/com/zksy/szpt/filter/SignatureVerificationFilter1.java
+0
-10
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter2.java
...va/com/zksy/szpt/filter/SignatureVerificationFilter2.java
+17
-5
src/main/java/com/zksy/szpt/handler/SzptMetaObjectHandler.java
...ain/java/com/zksy/szpt/handler/SzptMetaObjectHandler.java
+9
-0
No files found.
src/main/java/com/zksy/szpt/aspect/RequestBodyAnalysis.java
0 → 100644
View file @
60aca3dc
package
com
.
zksy
.
szpt
.
aspect
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.zksy.szpt.domain.CommonRequestDTO
;
import
com.zksy.szpt.util.EncryptUtil
;
import
org.apache.tomcat.util.http.fileupload.IOUtils
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpInputMessage
;
import
org.springframework.http.converter.HttpMessageConverter
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice
;
import
javax.annotation.Resource
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.lang.reflect.Type
;
import
java.nio.charset.StandardCharsets
;
@RestControllerAdvice
(
basePackages
=
"com.zksy.szpt.controller"
)
@ConditionalOnBean
(
name
=
"signatureVerificationFilter2"
)
public
class
RequestBodyAnalysis
implements
RequestBodyAdvice
{
@Resource
private
ObjectMapper
objectMapper
;
@Override
public
boolean
supports
(
MethodParameter
methodParameter
,
Type
type
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
)
{
return
methodParameter
.
hasParameterAnnotation
(
RequestBody
.
class
);
}
@Override
public
HttpInputMessage
beforeBodyRead
(
HttpInputMessage
httpInputMessage
,
MethodParameter
methodParameter
,
Type
type
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
)
throws
IOException
{
return
new
HttpInputMessage
()
{
@Override
public
HttpHeaders
getHeaders
()
{
return
httpInputMessage
.
getHeaders
();
}
@Override
public
InputStream
getBody
()
throws
IOException
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
IOUtils
.
copy
(
httpInputMessage
.
getBody
(),
baos
);
CommonRequestDTO
commonRequestDTO
=
objectMapper
.
readValue
(
new
String
(
baos
.
toByteArray
(),
StandardCharsets
.
UTF_8
),
CommonRequestDTO
.
class
);
String
content
=
EncryptUtil
.
getInstance
().
AESDecode
(
commonRequestDTO
.
getContent
(),
"c81e728d9d4c2f636f067f89cc14862c"
);
return
new
ByteArrayInputStream
(
content
.
getBytes
(
StandardCharsets
.
UTF_8
));
}
};
}
@Override
public
Object
afterBodyRead
(
Object
o
,
HttpInputMessage
httpInputMessage
,
MethodParameter
methodParameter
,
Type
type
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
)
{
return
o
;
}
@Override
public
Object
handleEmptyBody
(
Object
o
,
HttpInputMessage
httpInputMessage
,
MethodParameter
methodParameter
,
Type
type
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
)
{
return
o
;
}
}
src/main/java/com/zksy/szpt/config/WebConfig.java
View file @
60aca3dc
...
@@ -2,6 +2,7 @@ package com.zksy.szpt.config;
...
@@ -2,6 +2,7 @@ package com.zksy.szpt.config;
import
com.zksy.szpt.filter.SignatureVerificationFilter
;
import
com.zksy.szpt.filter.SignatureVerificationFilter
;
import
com.zksy.szpt.filter.SignatureVerificationFilter1
;
import
com.zksy.szpt.filter.SignatureVerificationFilter1
;
import
com.zksy.szpt.filter.SignatureVerificationFilter2
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
...
@@ -79,4 +80,16 @@ public class WebConfig implements WebMvcConfigurer {
...
@@ -79,4 +80,16 @@ public class WebConfig implements WebMvcConfigurer {
return
filterRegistrationBean
;
return
filterRegistrationBean
;
}
}
@Bean
@ConditionalOnBean
(
name
=
"signatureVerificationFilter2"
)
public
FilterRegistrationBean
getFilter1Registration
(
@Qualifier
(
"signatureVerificationFilter2"
)
SignatureVerificationFilter2
signatureVerificationFilter
)
{
FilterRegistrationBean
filterRegistrationBean
=
new
FilterRegistrationBean
();
filterRegistrationBean
.
setFilter
(
signatureVerificationFilter
);
//设置过滤器名称和路径,在过滤器类写了的话,这里不用重复写
filterRegistrationBean
.
setName
(
"filter"
);
filterRegistrationBean
.
addUrlPatterns
(
"/rest/*"
);
//设置过滤器执行顺序,数字越小,越早进行过滤,也可设置为负数
filterRegistrationBean
.
setOrder
(
1
);
return
filterRegistrationBean
;
}
}
}
src/main/java/com/zksy/szpt/domain/CurrentUserInfo.java
View file @
60aca3dc
...
@@ -6,9 +6,6 @@ public class CurrentUserInfo {
...
@@ -6,9 +6,6 @@ public class CurrentUserInfo {
private
String
deptCode
;
private
String
deptCode
;
private
String
ip
;
private
String
ip
;
public
CurrentUserInfo
()
{
}
private
CurrentUserInfo
(
CurrentUserInfoBuilder
builder
)
{
private
CurrentUserInfo
(
CurrentUserInfoBuilder
builder
)
{
this
.
userId
=
builder
.
userId
;
this
.
userId
=
builder
.
userId
;
this
.
userName
=
builder
.
userName
;
this
.
userName
=
builder
.
userName
;
...
...
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter.java
View file @
60aca3dc
...
@@ -174,9 +174,5 @@ public class SignatureVerificationFilter extends OncePerRequestFilter {
...
@@ -174,9 +174,5 @@ public class SignatureVerificationFilter extends OncePerRequestFilter {
CurrentUserInfo
currentUserInfo
=
new
CurrentUserInfo
.
CurrentUserInfoBuilder
().
userId
(
userId
).
userName
(
userId
).
ip
(
ip
).
build
();
CurrentUserInfo
currentUserInfo
=
new
CurrentUserInfo
.
CurrentUserInfoBuilder
().
userId
(
userId
).
userName
(
userId
).
ip
(
ip
).
build
();
UserContextHolder
.
set
(
currentUserInfo
);
UserContextHolder
.
set
(
currentUserInfo
);
}
}
private
void
checkDeptCode
(
String
deptCode
,
AppStore
appStore
)
{
}
}
}
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter1.java
View file @
60aca3dc
...
@@ -18,8 +18,6 @@ import org.slf4j.Logger;
...
@@ -18,8 +18,6 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StreamUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
org.springframework.web.filter.OncePerRequestFilter
;
...
@@ -31,8 +29,6 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -31,8 +29,6 @@ import javax.servlet.http.HttpServletResponse;
import
java.io.BufferedReader
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -173,11 +169,5 @@ public class SignatureVerificationFilter1 extends OncePerRequestFilter {
...
@@ -173,11 +169,5 @@ public class SignatureVerificationFilter1 extends OncePerRequestFilter {
CurrentUserInfo
currentUserInfo
=
new
CurrentUserInfo
.
CurrentUserInfoBuilder
().
userId
(
userId
).
userName
(
userId
).
ip
(
ip
).
build
();
CurrentUserInfo
currentUserInfo
=
new
CurrentUserInfo
.
CurrentUserInfoBuilder
().
userId
(
userId
).
userName
(
userId
).
ip
(
ip
).
build
();
UserContextHolder
.
set
(
currentUserInfo
);
UserContextHolder
.
set
(
currentUserInfo
);
}
}
private
String
getRequestBody
(
HttpServletRequest
request
)
throws
IOException
{
try
(
BufferedReader
reader
=
request
.
getReader
())
{
return
reader
.
lines
().
collect
(
Collectors
.
joining
(
System
.
lineSeparator
()));
}
}
}
}
src/main/java/com/zksy/szpt/filter/SignatureVerificationFilter2.java
View file @
60aca3dc
...
@@ -10,7 +10,6 @@ import com.zksy.szpt.domain.HttpResult;
...
@@ -10,7 +10,6 @@ import com.zksy.szpt.domain.HttpResult;
import
com.zksy.szpt.domain.HttpResultState
;
import
com.zksy.szpt.domain.HttpResultState
;
import
com.zksy.szpt.domain.po.AppStore
;
import
com.zksy.szpt.domain.po.AppStore
;
import
com.zksy.szpt.service.AppStoreService
;
import
com.zksy.szpt.service.AppStoreService
;
import
com.zksy.szpt.util.EncryptUtil
;
import
com.zksy.szpt.util.RedisKeyValidator
;
import
com.zksy.szpt.util.RedisKeyValidator
;
import
com.zksy.szpt.util.SignatureUtil
;
import
com.zksy.szpt.util.SignatureUtil
;
import
com.zksy.szpt.util.UserContextHolder
;
import
com.zksy.szpt.util.UserContextHolder
;
...
@@ -18,6 +17,7 @@ import org.slf4j.Logger;
...
@@ -18,6 +17,7 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
org.springframework.web.filter.OncePerRequestFilter
;
...
@@ -26,17 +26,15 @@ import javax.servlet.FilterChain;
...
@@ -26,17 +26,15 @@ import javax.servlet.FilterChain;
import
javax.servlet.ServletException
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
/**
/**
* 请求body { appkey , method , hotelCode , content(根据密钥[md5]对dto的json加密aes), sign(前面的参数一起哈希运算)} 。 无其他参数
* 请求body { appkey , method , hotelCode , content(根据密钥[md5]对dto的json加密aes), sign(前面的参数一起哈希运算)} 。 无其他参数
* 请求数据直接转发到后端服务
* 请求数据直接转发到后端服务
,用requestbodyanalysis进行解密
*/
*/
//@Component(value = "signatureVerificationFilter
1
")
//@Component(value = "signatureVerificationFilter
2
")
public
class
SignatureVerificationFilter2
extends
OncePerRequestFilter
{
public
class
SignatureVerificationFilter2
extends
OncePerRequestFilter
{
public
Logger
logger
=
LoggerFactory
.
getLogger
(
SignatureVerificationFilter2
.
class
);
public
Logger
logger
=
LoggerFactory
.
getLogger
(
SignatureVerificationFilter2
.
class
);
...
@@ -64,6 +62,7 @@ public class SignatureVerificationFilter2 extends OncePerRequestFilter {
...
@@ -64,6 +62,7 @@ public class SignatureVerificationFilter2 extends OncePerRequestFilter {
if
(
result
!=
null
)
{
if
(
result
!=
null
)
{
this
.
write
(
response
,
result
);
this
.
write
(
response
,
result
);
}
else
{
}
else
{
addUserInfo
(
request
);
filterChain
.
doFilter
(
requestWrapper
,
response
);
filterChain
.
doFilter
(
requestWrapper
,
response
);
}
}
}
}
...
@@ -152,5 +151,18 @@ public class SignatureVerificationFilter2 extends OncePerRequestFilter {
...
@@ -152,5 +151,18 @@ public class SignatureVerificationFilter2 extends OncePerRequestFilter {
response
.
setCharacterEncoding
(
StandardCharsets
.
UTF_8
.
name
());
response
.
setCharacterEncoding
(
StandardCharsets
.
UTF_8
.
name
());
response
.
getWriter
().
write
(
JSONUtil
.
toJsonStr
(
httpResult
));
response
.
getWriter
().
write
(
JSONUtil
.
toJsonStr
(
httpResult
));
}
}
/**
* 增加用户信息
*
* @param request
*/
private
void
addUserInfo
(
HttpServletRequest
request
)
{
// 增加用户信息
String
userId
=
request
.
getHeader
(
SignatureUtil
.
APPID
);
String
ip
=
request
.
getRemoteAddr
();
CurrentUserInfo
currentUserInfo
=
new
CurrentUserInfo
.
CurrentUserInfoBuilder
().
userId
(
userId
).
userName
(
userId
).
ip
(
ip
).
build
();
UserContextHolder
.
set
(
currentUserInfo
);
}
}
}
src/main/java/com/zksy/szpt/handler/SzptMetaObjectHandler.java
View file @
60aca3dc
...
@@ -17,6 +17,8 @@ import java.util.List;
...
@@ -17,6 +17,8 @@ import java.util.List;
*/
*/
@Component
@Component
public
class
SzptMetaObjectHandler
implements
MetaObjectHandler
{
public
class
SzptMetaObjectHandler
implements
MetaObjectHandler
{
private
static
final
org
.
slf4j
.
Logger
log
=
org
.
slf4j
.
LoggerFactory
.
getLogger
(
SzptMetaObjectHandler
.
class
);
@Override
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
public
void
insertFill
(
MetaObject
metaObject
)
{
// 新增时自动填充 create_time, update_time 字段
// 新增时自动填充 create_time, update_time 字段
...
@@ -24,6 +26,10 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
...
@@ -24,6 +26,10 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
// this.strictInsertFill(metaObject, "cjsj", Date.class, new Date());
// this.strictInsertFill(metaObject, "cjsj", Date.class, new Date());
CurrentUserInfo
currentUserInfo
=
UserContextHolder
.
get
();
CurrentUserInfo
currentUserInfo
=
UserContextHolder
.
get
();
if
(
currentUserInfo
==
null
)
{
log
.
error
(
"当前用户信息为空,无法自动填充 create_time, update_time 字段"
);
}
List
<
StrictFill
>
fields
=
Arrays
.
asList
(
List
<
StrictFill
>
fields
=
Arrays
.
asList
(
StrictFill
.
of
(
"createTime"
,
Date
.
class
,
new
Date
()),
StrictFill
.
of
(
"createTime"
,
Date
.
class
,
new
Date
()),
StrictFill
.
of
(
"cjsj"
,
Date
.
class
,
new
Date
()),
StrictFill
.
of
(
"cjsj"
,
Date
.
class
,
new
Date
()),
...
@@ -51,6 +57,9 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
...
@@ -51,6 +57,9 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
@Override
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
public
void
updateFill
(
MetaObject
metaObject
)
{
CurrentUserInfo
currentUserInfo
=
UserContextHolder
.
get
();
CurrentUserInfo
currentUserInfo
=
UserContextHolder
.
get
();
if
(
currentUserInfo
==
null
)
{
log
.
error
(
"当前用户信息为空,无法自动填充 update_time 字段"
);
}
List
<
StrictFill
>
fields
=
Arrays
.
asList
(
List
<
StrictFill
>
fields
=
Arrays
.
asList
(
StrictFill
.
of
(
"updateTime"
,
Date
.
class
,
new
Date
()),
StrictFill
.
of
(
"updateTime"
,
Date
.
class
,
new
Date
()),
StrictFill
.
of
(
"gxrid"
,
String
.
class
,
"1"
),
StrictFill
.
of
(
"gxrid"
,
String
.
class
,
"1"
),
...
...
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