Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
U
unififi-spring-cloud-guide
Project
Project
Details
Activity
Releases
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
lihaipeng
unififi-spring-cloud-guide
Commits
0cc4790c
Commit
0cc4790c
authored
Nov 10, 2020
by
lihaipeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gateway UnififiLimitResolver
parent
d1f61698
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
9 deletions
+64
-9
GatewayConfiguration.java
...rc/main/java/com/unififi/config/GatewayConfiguration.java
+0
-8
UnififiLimitResolver.java
...rc/main/java/com/unififi/config/UnififiLimitResolver.java
+63
-0
bootstrap.yml
unififi-gateway/src/main/resources/bootstrap.yml
+1
-1
No files found.
unififi-gateway/src/main/java/com/unififi/config/GatewayConfiguration.java
View file @
0cc4790c
package
com
.
unififi
.
config
;
import
org.springframework.cloud.gateway.filter.ratelimit.KeyResolver
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
reactor.core.publisher.Mono
;
/**
* @author lihaipeng
...
...
@@ -113,9 +110,4 @@ public class GatewayConfiguration {
// GatewayRuleManager.loadRules(rules);
// }
@Bean
KeyResolver
ipKeyResolver
()
{
return
exchange
->
Mono
.
just
(
exchange
.
getRequest
().
getRemoteAddress
().
getHostName
());
}
}
\ No newline at end of file
unififi-gateway/src/main/java/com/unififi/config/UnififiLimitResolver.java
0 → 100644
View file @
0cc4790c
package
com
.
unififi
.
config
;
import
com.unififi.constant.Constants
;
import
com.unififi.util.ServletUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cloud.gateway.filter.ratelimit.KeyResolver
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
reactor.core.publisher.Mono
;
/**
* 限流解析器
*
* @author lihaipeng
* @date 2020-09-24
*/
@Configuration
public
class
UnififiLimitResolver
{
@Value
(
"${spring.application.name:unififi-gateway}"
)
private
String
applicationName
;
@Primary
@Bean
public
KeyResolver
ipKeyResolver
()
{
return
(
exchange
)
->
{
String
hostname
=
exchange
.
getRequest
().
getRemoteAddress
().
getHostName
();
if
(
StringUtils
.
isEmpty
(
hostname
))
{
return
Mono
.
empty
();
}
else
{
return
Mono
.
just
(
applicationName
+
Constants
.
COLON
+
hostname
);
}
};
}
@Bean
public
KeyResolver
userKeyResolver
()
{
return
(
exchange
)
->
{
String
username
=
exchange
.
getRequest
().
getHeaders
().
getFirst
(
ServletUtils
.
HEADER_KEY_UNIFIFI_USERNAME
);
if
(
StringUtils
.
isEmpty
(
username
))
{
return
Mono
.
empty
();
}
else
{
return
Mono
.
just
(
applicationName
+
Constants
.
COLON
+
username
);
}
};
}
@Bean
KeyResolver
apiKeyResolver
()
{
return
(
exchange
)
->
{
String
path
=
exchange
.
getRequest
().
getPath
().
value
();
if
(
StringUtils
.
isEmpty
(
path
))
{
return
Mono
.
empty
();
}
else
{
return
Mono
.
just
(
applicationName
+
Constants
.
COLON
+
path
);
}
};
}
}
unififi-gateway/src/main/resources/bootstrap.yml
View file @
0cc4790c
...
...
@@ -126,4 +126,4 @@ unififi:
unififi-demo1-service-user-get
:
user:get
unififi-demo2-service-user-get
:
user:get
timezone
:
enabled
:
true
\ No newline at end of file
enabled
:
false
\ No newline at end of file
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