Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
cfld-region-outline
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
cfld-backend
cfld-region-outline
Commits
7a4b71c8
Commit
7a4b71c8
authored
Dec 27, 2023
by
zhouxudong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
反扒加密
parent
f54f22fc
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
105 additions
and
5 deletions
+105
-5
kk-anti-reptile-1.0.0-RELEASE.jar
jar/kk-anti-reptile-1.0.0-RELEASE.jar
+0
-0
Decrypt.java
src/main/java/com/lyy/admin/common/anno/Decrypt.java
+1
-1
Encrypt.java
src/main/java/com/lyy/admin/common/anno/Encrypt.java
+1
-1
EncryptBusiness.java
src/main/java/com/lyy/admin/common/anno/EncryptBusiness.java
+17
-0
Constants.java
src/main/java/com/lyy/admin/common/constant/Constants.java
+2
-0
EncrptBusinessResponse.java
.../com/lyy/admin/common/encrypt/EncrptBusinessResponse.java
+73
-0
EncrptResponse.java
...ain/java/com/lyy/admin/common/encrypt/EncrptResponse.java
+1
-1
GlobalExceptionHandler.java
...va/com/lyy/admin/common/utils/GlobalExceptionHandler.java
+3
-1
DevelopmentInfoController.java
...controller/developmentinfo/DevelopmentInfoController.java
+3
-0
ParkInfoController.java
...com/lyy/admin/controller/parkinfo/ParkInfoController.java
+3
-0
application.yml
src/main/resources/application.yml
+1
-1
No files found.
jar/kk-anti-reptile-1.0.0-RELEASE.jar
View file @
7a4b71c8
No preview for this file type
src/main/java/com/lyy/admin/common/anno/Decrypt.java
View file @
7a4b71c8
...
...
@@ -8,7 +8,7 @@ import java.lang.annotation.Target;
* @Author:zhouxudong
* @version: 1.0
* @Date: 2023/12/12 9:40
* @Description: 解密注解
* @Description:
给app的
解密注解
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
...
...
src/main/java/com/lyy/admin/common/anno/Encrypt.java
View file @
7a4b71c8
...
...
@@ -9,7 +9,7 @@ import java.lang.annotation.Target;
* @Author:zhouxudong
* @version: 1.0
* @Date: 2023/12/12 9:40
* @Description: 加密注解
* @Description:
给app的
加密注解
*/
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
...
...
src/main/java/com/lyy/admin/common/anno/EncryptBusiness.java
0 → 100644
View file @
7a4b71c8
package
com
.
lyy
.
admin
.
common
.
anno
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @Author:zhouxudong
* @version: 1.0
* @Date: 2023/12/12 9:40
* @Description: 前后端交互加密注解
*/
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
EncryptBusiness
{
}
src/main/java/com/lyy/admin/common/constant/Constants.java
View file @
7a4b71c8
...
...
@@ -115,6 +115,8 @@ public class Constants {
//短信过期时间
public
static
final
int
EXPIRE_TIME
=
5
;
//请求头前端存放的密钥 返回值加密使用
public
static
final
String
secure
=
"secure"
;
//秒
public
static
final
int
INTERVAL_TIME
=
4
*
60
;
//#短信时间间隔(每天限制次数) 单位 天
...
...
src/main/java/com/lyy/admin/common/encrypt/EncrptBusinessResponse.java
0 → 100644
View file @
7a4b71c8
package
com
.
lyy
.
admin
.
common
.
encrypt
;
import
cn.hutool.crypto.asymmetric.KeyType
;
import
cn.hutool.crypto.asymmetric.RSA
;
import
cn.hutool.crypto.symmetric.AES
;
import
cn.hutool.json.JSONUtil
;
import
com.lyy.admin.common.anno.EncryptBusiness
;
import
com.lyy.admin.common.constant.Constants
;
import
com.lyy.admin.common.utils.AjaxResult
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.converter.HttpMessageConverter
;
import
org.springframework.http.server.ServerHttpRequest
;
import
org.springframework.http.server.ServerHttpResponse
;
import
org.springframework.http.server.ServletServerHttpRequest
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice
;
import
java.nio.charset.StandardCharsets
;
/**
* @Author:zhouxudong
*
* @version: 1.0 @Date: 2023/12/12 10:07 @Description: 前后端加密统一处理
*/
@ControllerAdvice
@Slf4j
public
class
EncrptBusinessResponse
implements
ResponseBodyAdvice
<
Object
>
{
@Value
(
"${sign.privateKey}"
)
private
String
privateKey
;
/** 支持什么时候加密 */
@Override
public
boolean
supports
(
MethodParameter
methodParameter
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
)
{
return
methodParameter
.
hasMethodAnnotation
(
EncryptBusiness
.
class
);
}
/** 数据响应进行加密 */
@Override
public
Object
beforeBodyWrite
(
Object
result
,
MethodParameter
methodParameter
,
MediaType
mediaType
,
Class
<?
extends
HttpMessageConverter
<?>>
aClass
,
ServerHttpRequest
serverHttpRequest
,
ServerHttpResponse
serverHttpResponse
)
{
//AjaxResult value = AjaxResult.success(result);
log
.
info
(
"result:{}"
,
result
);
if
(
ObjectUtils
.
isEmpty
(
result
)){
return
AjaxResult
.
success
(
"操作成功"
);
}
RSA
rsa
=
new
RSA
(
privateKey
,
null
);
ServletServerHttpRequest
servletRequest
=
(
ServletServerHttpRequest
)
serverHttpRequest
;
//获取签名
String
sign
=
servletRequest
.
getServletRequest
().
getHeader
(
Constants
.
secure
);
//获取对称加密的key
String
decrypt
=
rsa
.
decryptStr
(
sign
,
KeyType
.
PrivateKey
);
// 获取key的字节
AES
aes
=
new
AES
(
"CBC"
,
"PKCS7Padding"
,
decrypt
.
getBytes
(),
decrypt
.
getBytes
(
StandardCharsets
.
UTF_8
));
boolean
isStringResult
=
methodParameter
.
getParameterType
().
equals
(
String
.
class
);
if
(
isStringResult
)
{
return
JSONUtil
.
toJsonStr
(
AjaxResult
.
success
(
"操作成功"
,
aes
.
encryptBase64
(
result
.
toString
())));
}
// 如果msg和data存在的话,则进行加密,最后进行返回
return
AjaxResult
.
success
(
"操作成功"
,
aes
.
encryptBase64
(
JSONUtil
.
toJsonStr
(
result
)));
}
}
src/main/java/com/lyy/admin/common/encrypt/EncrptResponse.java
View file @
7a4b71c8
...
...
@@ -23,7 +23,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* @Author:zhouxudong
*
* @version: 1.0 @Date: 2023/12/12 10:07 @Description:
* @version: 1.0 @Date: 2023/12/12 10:07 @Description:
给app用的
*/
@ControllerAdvice
@Slf4j
...
...
src/main/java/com/lyy/admin/common/utils/GlobalExceptionHandler.java
View file @
7a4b71c8
...
...
@@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.lyy.admin.common.anno.Encrypt
;
import
com.lyy.admin.common.anno.EncryptBusiness
;
import
com.lyy.admin.common.exception.APIException
;
import
com.lyy.admin.common.exception.LiyerenException
;
import
org.slf4j.Logger
;
...
...
@@ -41,7 +42,8 @@ public class GlobalExceptionHandler implements ResponseBodyAdvice {
public
boolean
supports
(
MethodParameter
returnType
,
Class
converterType
)
{
boolean
assignableFrom
=
returnType
.
getParameterType
().
isAssignableFrom
(
AjaxResult
.
class
);
boolean
Encrypt
=
returnType
.
hasMethodAnnotation
(
Encrypt
.
class
);
return
!
assignableFrom
&&!
Encrypt
;
boolean
encryptBusiness
=
returnType
.
hasMethodAnnotation
(
EncryptBusiness
.
class
);
return
!
assignableFrom
&&!
Encrypt
&&!
encryptBusiness
;
}
@Override
...
...
src/main/java/com/lyy/admin/controller/developmentinfo/DevelopmentInfoController.java
View file @
7a4b71c8
...
...
@@ -5,6 +5,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import
com.lyy.admin.VO.DevelopmentInfoAllSaveVO
;
import
com.lyy.admin.VO.ParkInfoAllSaveVO
;
import
com.lyy.admin.common.anno.Cache
;
import
com.lyy.admin.common.anno.EncryptBusiness
;
import
com.lyy.admin.common.exception.APIException
;
import
com.lyy.admin.common.page.TableDataInfo
;
import
com.lyy.admin.common.utils.PageUtils
;
...
...
@@ -46,6 +47,7 @@ public class DevelopmentInfoController extends BaseController {
@ApiImplicitParam
(
name
=
"orderByColumn"
,
value
=
"排序字段(可为空,传类属性)"
,
type
=
"String"
),
@ApiImplicitParam
(
name
=
"isAsc"
,
value
=
"排序字段(可为空,请传asc或者desc)"
,
type
=
"String"
)
})
@EncryptBusiness
public
TableDataInfo
list
(
DevelopmentInfoParam
developmentInfoParam
)
{
boolean
login
=
isLogin
();
String
status
=
DevelopmentStatusEnum
.
STATUS_YRZ
.
getCode
()+
","
+
DevelopmentStatusEnum
.
STATUS_DRZ
.
getCode
();
...
...
@@ -71,6 +73,7 @@ public class DevelopmentInfoController extends BaseController {
@ResponseBody
@ApiOperation
(
value
=
"某个开发区信息"
,
notes
=
"rest风格传参,将参数拼接在url上"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"开发区id"
,
type
=
"Long"
)
@EncryptBusiness
public
DevelopmentInfoAllVO
get
(
@PathVariable
Long
id
)
{
return
developmentInfoSerivce
.
getDevelopmentInfo
(
id
,
getUserInfo
().
getUserId
(),
getUserInfo
().
getIsMembership
());
}
...
...
src/main/java/com/lyy/admin/controller/parkinfo/ParkInfoController.java
View file @
7a4b71c8
...
...
@@ -7,6 +7,7 @@ import com.lyy.admin.VO.ParkInfoAllSaveVO;
import
com.lyy.admin.VO.ParkInfoAllVO
;
import
com.lyy.admin.VO.ParkInfoListVO
;
import
com.lyy.admin.common.anno.Cache
;
import
com.lyy.admin.common.anno.EncryptBusiness
;
import
com.lyy.admin.common.page.TableDataInfo
;
import
com.lyy.admin.common.utils.PageUtils
;
import
com.lyy.admin.controller.BaseController
;
...
...
@@ -56,6 +57,7 @@ public class ParkInfoController extends BaseController {
@ApiImplicitParam
(
name
=
"orderByColumn"
,
value
=
"排序字段(可为空,传类属性)"
,
type
=
"String"
),
@ApiImplicitParam
(
name
=
"isAsc"
,
value
=
"排序字段(可为空,请传asc或者desc)"
,
type
=
"String"
)
})
@EncryptBusiness
public
TableDataInfo
list
(
ParkInfoParam
parkInfoParam
)
{
boolean
login
=
isLogin
();
String
status
=
ParkInfoEnum
.
STATUS_YRZ
.
getCode
()+
","
+
ParkInfoEnum
.
STATUS_DRZ
.
getCode
();
...
...
@@ -85,6 +87,7 @@ public class ParkInfoController extends BaseController {
@ResponseBody
@ApiOperation
(
value
=
"获取某个园区信息"
,
notes
=
"rest风格传参,将参数拼接在url上"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"园区id"
,
type
=
"Long"
)
@EncryptBusiness
public
ParkInfoAllVO
get
(
@PathVariable
Long
id
)
{
return
parkInfoService
.
getParkInfo
(
id
,
getUserInfo
().
getUserId
(),
getUserInfo
().
getIsMembership
());
}
...
...
src/main/resources/application.yml
View file @
7a4b71c8
...
...
@@ -108,7 +108,7 @@ anti:
reptile
:
manager
:
#是否启用反爬虫插件
enabled
:
fals
e
enabled
:
tru
e
#局部拦截时,需要反爬的接口列表,以','分隔,支持正则匹配。全局拦截模式下无需配置
include-urls
:
^${server.servlet.context-path}/.*$
#是否启用 IP Rule
...
...
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