Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
0bc52701
Commit
0bc52701
authored
Dec 13, 2024
by
李文彬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(*): IP 白名单设置启用开关
parent
fc49f055
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
1 deletion
+69
-1
pom.xml
pom.xml
+7
-0
IpLimitController.java
.../quantgroup/xyqb/controller/api/v2/IpLimitController.java
+53
-0
IpLimitFilter.java
src/main/java/cn/quantgroup/xyqb/filter/IpLimitFilter.java
+9
-1
No files found.
pom.xml
View file @
0bc52701
...
...
@@ -45,6 +45,7 @@
<maven.test.skip>
true
</maven.test.skip>
<org.springframework.security.version>
3.2.7.RELEASE
</org.springframework.security.version>
<jackson.version>
2.13.1
</jackson.version>
<dingtalk.sdk.version>
2.1.42
</dingtalk.sdk.version>
</properties>
<dependencies>
...
...
@@ -367,6 +368,12 @@
<artifactId>
caffeine
</artifactId>
<version>
2.9.3
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
dingtalk
</artifactId>
<version>
${dingtalk.sdk.version}
</version>
</dependency>
</dependencies>
<build>
...
...
src/main/java/cn/quantgroup/xyqb/controller/api/v2/IpLimitController.java
0 → 100644
View file @
0bc52701
package
cn
.
quantgroup
.
xyqb
.
controller
.
api
.
v2
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Objects
;
/**
* @author hyuk
*/
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/ip/limit"
)
public
class
IpLimitController
{
private
final
StringRedisTemplate
stringRedisTemplate
;
private
static
final
String
TOKEN
=
"8n7y5y9UaKIOFqox"
;
public
static
final
String
IP_LIMIT_STATUS_KEY
=
"xyqb_user:01:ip_limit_status:m10z"
;
@GetMapping
(
"/current-status/{token}"
)
public
JsonResult
<
String
>
getCurrentStatus
(
@PathVariable
String
token
)
{
if
(!
Objects
.
equals
(
TOKEN
,
token
))
{
return
JsonResult
.
buildErrorStateResult
(
"非法访问"
,
null
);
}
String
status
=
stringRedisTemplate
.
opsForValue
().
get
(
IP_LIMIT_STATUS_KEY
);
if
(
StringUtils
.
isEmpty
(
status
))
{
status
=
"1"
;
}
return
JsonResult
.
buildSuccessResult
(
"success"
,
status
);
}
@GetMapping
(
"/status/set/{token}/{status}"
)
public
JsonResult
<
String
>
setStatus
(
@PathVariable
String
token
,
@PathVariable
String
status
)
{
if
(!
Objects
.
equals
(
TOKEN
,
token
))
{
return
JsonResult
.
buildErrorStateResult
(
"非法访问"
,
null
);
}
if
(!
Objects
.
equals
(
status
,
"1"
)
&&
!
Objects
.
equals
(
status
,
"0"
))
{
return
JsonResult
.
buildErrorStateResult
(
"非法访问"
,
null
);
}
stringRedisTemplate
.
opsForValue
().
set
(
IP_LIMIT_STATUS_KEY
,
status
);
return
JsonResult
.
buildSuccessResult
(
"success"
,
status
);
}
}
src/main/java/cn/quantgroup/xyqb/filter/IpLimitFilter.java
View file @
0bc52701
...
...
@@ -20,8 +20,11 @@ import javax.servlet.ServletResponse;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
static
cn
.
quantgroup
.
xyqb
.
controller
.
api
.
v2
.
IpLimitController
.
IP_LIMIT_STATUS_KEY
;
/**
* @author hyuk
*/
...
...
@@ -73,7 +76,12 @@ public class IpLimitFilter implements Filter {
return
;
}
log
.
info
(
"[IpLimitFilter]外网调用, clientIp : {}, uri : {}"
,
clientIp
,
request
.
getRequestURI
());
String
status
=
stringRedisTemplate
.
opsForValue
().
get
(
IP_LIMIT_STATUS_KEY
);
if
(
status
==
null
||
Objects
.
equals
(
status
,
"1"
))
{
filterChain
.
doFilter
(
servletRequest
,
servletResponse
);
}
else
{
response
.
setStatus
(
HttpServletResponse
.
SC_FORBIDDEN
);
}
return
;
// try {
// // 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