Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-backend
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
framework
cloud-backend
Commits
1442e125
Commit
1442e125
authored
Jul 10, 2021
by
袁伟铭
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.0.0
parent
88aba3f9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
8 deletions
+14
-8
common-utils/src/main/java/com/zq/common/config/limit/LimitAspect.java
+6
-5
common-utils/src/main/java/com/zq/common/config/redis/BaseCacheKeys.java
+8
-3
No files found.
common-utils/src/main/java/com/zq/common/config/limit/LimitAspect.java
View file @
1442e125
...
@@ -117,6 +117,7 @@ public class LimitAspect {
...
@@ -117,6 +117,7 @@ public class LimitAspect {
*/
*/
private
String
buildLimitKey
(
Limit
limit
,
JoinPoint
joinPoint
,
Method
signatureMethod
)
{
private
String
buildLimitKey
(
Limit
limit
,
JoinPoint
joinPoint
,
Method
signatureMethod
)
{
String
limitKey
=
null
;
String
limitKey
=
null
;
String
prefix
=
limit
.
prefix
();
String
key
=
limit
.
key
();
String
key
=
limit
.
key
();
key
=
StringUtils
.
isBlank
(
key
)
?
signatureMethod
.
getName
()
:
key
;
key
=
StringUtils
.
isBlank
(
key
)
?
signatureMethod
.
getName
()
:
key
;
LimitType
limitType
=
limit
.
limitType
();
LimitType
limitType
=
limit
.
limitType
();
...
@@ -124,13 +125,13 @@ public class LimitAspect {
...
@@ -124,13 +125,13 @@ public class LimitAspect {
Object
[]
args
=
joinPoint
.
getArgs
();
Object
[]
args
=
joinPoint
.
getArgs
();
switch
(
limitType
)
{
switch
(
limitType
)
{
case
IP:
case
IP:
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
IP
,
key
,
HttpRequestUtils
.
getClientIp
());
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
IP
,
prefix
,
key
,
HttpRequestUtils
.
getClientIp
());
break
;
break
;
case
USER:
case
USER:
// 按用户登录id限流
// 按用户登录id限流
ApiTokenVo
apiTokenVo
=
ContextUtils
.
getUserContext
();
ApiTokenVo
apiTokenVo
=
ContextUtils
.
getUserContext
();
if
(
apiTokenVo
!=
null
)
{
if
(
apiTokenVo
!=
null
)
{
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
USER
,
key
,
String
.
valueOf
(
apiTokenVo
.
getUserId
()));
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
USER
,
prefix
,
key
,
String
.
valueOf
(
apiTokenVo
.
getUserId
()));
}
else
{
}
else
{
log
.
warn
(
">> 未找到登录用户信息,限流失败: {}"
,
joinPoint
);
log
.
warn
(
">> 未找到登录用户信息,限流失败: {}"
,
joinPoint
);
}
}
...
@@ -146,7 +147,7 @@ public class LimitAspect {
...
@@ -146,7 +147,7 @@ public class LimitAspect {
break
;
break
;
}
}
String
fieldValue
=
getPojoField
(
field
,
args
[
0
]);
String
fieldValue
=
getPojoField
(
field
,
args
[
0
]);
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
POJO_FIELD
,
key
,
fieldValue
);
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
POJO_FIELD
,
prefix
,
key
,
fieldValue
);
break
;
break
;
case
PARAM:
case
PARAM:
int
keyIndex
=
limit
.
keyParamIndex
();
int
keyIndex
=
limit
.
keyParamIndex
();
...
@@ -154,13 +155,13 @@ public class LimitAspect {
...
@@ -154,13 +155,13 @@ public class LimitAspect {
if
(
keyIndex
<
0
||
args
==
null
||
args
.
length
<
(
keyIndex
+
1
)
||
args
[
keyIndex
]
==
null
)
{
if
(
keyIndex
<
0
||
args
==
null
||
args
.
length
<
(
keyIndex
+
1
)
||
args
[
keyIndex
]
==
null
)
{
log
.
warn
(
">> 未找到参数或参数值为空,限流失败: {}, keyParamIndex={}"
,
joinPoint
,
keyIndex
);
log
.
warn
(
">> 未找到参数或参数值为空,限流失败: {}, keyParamIndex={}"
,
joinPoint
,
keyIndex
);
}
else
if
(
isValidKeyParamType
(
args
[
keyIndex
]))
{
}
else
if
(
isValidKeyParamType
(
args
[
keyIndex
]))
{
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
PARAM
,
key
,
String
.
valueOf
(
args
[
keyIndex
]));
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
PARAM
,
prefix
,
key
,
String
.
valueOf
(
args
[
keyIndex
]));
}
else
{
}
else
{
log
.
warn
(
">> 设置的参数不是string/long/int/short/byte类型,限流失败: {}"
,
joinPoint
);
log
.
warn
(
">> 设置的参数不是string/long/int/short/byte类型,限流失败: {}"
,
joinPoint
);
}
}
break
;
break
;
case
KEY:
case
KEY:
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
KEY
,
key
);
limitKey
=
BaseCacheKeys
.
rateLimitKey
(
LimitType
.
KEY
,
prefix
,
key
);
break
;
break
;
default
:
default
:
// nothing to do
// nothing to do
...
...
common-utils/src/main/java/com/zq/common/config/redis/BaseCacheKeys.java
View file @
1442e125
...
@@ -43,23 +43,28 @@ public abstract class BaseCacheKeys {
...
@@ -43,23 +43,28 @@ public abstract class BaseCacheKeys {
* 构建限流Key
* 构建限流Key
*
*
* @param type
* @param type
* @param prefix
* @param key
* @param key
* @return
* @return
*/
*/
public
static
String
rateLimitKey
(
LimitType
type
,
String
key
)
{
public
static
String
rateLimitKey
(
LimitType
type
,
String
prefix
,
String
key
)
{
return
rateLimitKey
(
type
,
key
,
null
);
return
rateLimitKey
(
type
,
prefix
,
key
,
null
);
}
}
/**
/**
* 构建限流key
* 构建限流key
*
*
* @param type
* @param type
* @param prefix
* @param key
* @param key
* @param param
* @param param
* @return
* @return
*/
*/
public
static
String
rateLimitKey
(
LimitType
type
,
String
key
,
String
param
)
{
public
static
String
rateLimitKey
(
LimitType
type
,
String
prefix
,
String
key
,
String
param
)
{
String
result
=
RATE_LIMIT
;
String
result
=
RATE_LIMIT
;
if
(
StringUtils
.
isNotBlank
(
prefix
))
{
result
=
PREFIX
+
prefix
+
"."
;
}
switch
(
type
)
{
switch
(
type
)
{
case
IP:
case
IP:
result
+=
"ip."
;
result
+=
"ip."
;
...
...
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