Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
M
micro-security
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
david.zhong
micro-security
Commits
44c4aab2
Commit
44c4aab2
authored
Mar 12, 2019
by
david.zhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
补单,写死的配置写到配置文件中优化
parent
f361fafd
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
19 deletions
+125
-19
CustomFilterConfig.java
src/main/java/com/ost/micro/config/CustomFilterConfig.java
+74
-0
UrlFilter.java
src/main/java/com/ost/micro/filter/UrlFilter.java
+38
-16
application-dev.yml
src/main/resources/application-dev.yml
+2
-0
application-test.yml
src/main/resources/application-test.yml
+2
-0
application.yml
src/main/resources/application.yml
+9
-3
No files found.
src/main/java/com/ost/micro/config/CustomFilterConfig.java
0 → 100644
View file @
44c4aab2
package
com
.
ost
.
micro
.
config
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
@Component
@ConfigurationProperties
(
prefix
=
"url-filter"
)
public
class
CustomFilterConfig
{
private
String
name
;
private
String
[]
urlExclude
;
private
String
[]
domains
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
[]
getUrlExclude
()
{
return
urlExclude
;
}
public
void
setUrlExclude
(
String
[]
urlExclude
)
{
this
.
urlExclude
=
urlExclude
;
}
public
String
[]
getDomains
()
{
return
domains
;
}
public
void
setDomains
(
String
[]
domains
)
{
this
.
domains
=
domains
;
}
public
class
DomainApiInfo
{
private
String
domain
;
private
String
uri
;
private
String
service
;
public
String
getDomain
()
{
return
domain
;
}
public
void
setDomain
(
String
domain
)
{
this
.
domain
=
domain
;
}
public
String
getUri
()
{
return
uri
;
}
public
void
setUri
(
String
uri
)
{
this
.
uri
=
uri
;
}
public
String
getService
()
{
return
service
;
}
public
void
setService
(
String
service
)
{
this
.
service
=
service
;
}
}
}
src/main/java/com/ost/micro/filter/UrlFilter.java
View file @
44c4aab2
...
@@ -3,15 +3,26 @@ package com.ost.micro.filter;
...
@@ -3,15 +3,26 @@ package com.ost.micro.filter;
import
com.netflix.zuul.ZuulFilter
;
import
com.netflix.zuul.ZuulFilter
;
import
com.netflix.zuul.context.RequestContext
;
import
com.netflix.zuul.context.RequestContext
;
import
com.netflix.zuul.exception.ZuulException
;
import
com.netflix.zuul.exception.ZuulException
;
import
com.ost.micro.config.CustomFilterConfig
;
import
com.ost.micro.core.utils.ObjectMapUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cloud.netflix.zuul.filters.support.FilterConstants
;
import
org.springframework.cloud.netflix.zuul.filters.support.FilterConstants
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@Slf4j
@Component
@Component
public
class
UrlFilter
extends
ZuulFilter
{
public
class
UrlFilter
extends
ZuulFilter
{
@Autowired
private
CustomFilterConfig
customFilterConfig
;
@Override
@Override
public
String
filterType
()
{
public
String
filterType
()
{
return
FilterConstants
.
PRE_TYPE
;
return
FilterConstants
.
PRE_TYPE
;
...
@@ -26,13 +37,17 @@ public class UrlFilter extends ZuulFilter {
...
@@ -26,13 +37,17 @@ public class UrlFilter extends ZuulFilter {
public
boolean
shouldFilter
()
{
public
boolean
shouldFilter
()
{
RequestContext
ctx
=
RequestContext
.
getCurrentContext
();
RequestContext
ctx
=
RequestContext
.
getCurrentContext
();
HttpServletRequest
request
=
ctx
.
getRequest
();
HttpServletRequest
request
=
ctx
.
getRequest
();
//String url = request.getScheme()+"://"+request.getServerName()+request.getRequestURI();
String
url
=
request
.
getRequestURL
().
toString
();
String
url
=
request
.
getRequestURL
().
toString
();
if
(
url
.
contains
(
"login"
)
||
url
.
contains
(
"logout"
)
||
url
.
contains
(
"captcha"
)
||
url
.
contains
(
"webjars"
)
||
url
.
contains
(
"druid"
)
if
(
null
!=
customFilterConfig
)
{
||
url
.
contains
(
"swagger"
)
||
url
.
contains
(
"/v2/api-docs"
)
||
url
.
contains
(
"swagger-ui.html"
)
||
url
.
contains
(
"/swagger-resources"
)
String
[]
urlExclude
=
customFilterConfig
.
getUrlExclude
();
||
url
.
contains
(
"service"
)
||
url
.
contains
(
"editor-app"
)
||
url
.
contains
(
"/diagram-viewer"
)
||
url
.
contains
(
"modeler.html"
)
if
(
urlExclude
.
length
>
0
)
{
||
url
.
contains
(
"favicon.ico"
)
||
url
.
contains
(
"sys"
)
||
url
.
contains
(
"actuator"
))
{
for
(
int
i
=
0
;
i
<
urlExclude
.
length
;
i
++)
{
return
false
;
if
(
url
.
contains
(
urlExclude
[
i
])){
ctx
.
put
(
FilterConstants
.
REQUEST_URI_KEY
,
request
.
getRequestURI
());
return
false
;
}
}
}
}
}
return
true
;
return
true
;
}
}
...
@@ -45,16 +60,23 @@ public class UrlFilter extends ZuulFilter {
...
@@ -45,16 +60,23 @@ public class UrlFilter extends ZuulFilter {
String
originalRequestPath
=
request
.
getRequestURI
().
toString
();
String
originalRequestPath
=
request
.
getRequestURI
().
toString
();
String
url
=
request
.
getScheme
()+
"://"
+
request
.
getServerName
();
String
url
=
request
.
getScheme
()+
"://"
+
request
.
getServerName
();
log
.
info
(
"request url is {}"
,
url
);
log
.
info
(
"request url is {}"
,
url
);
if
(
url
.
contains
(
"backstage"
))
{
String
[]
domainApis
=
customFilterConfig
.
getDomains
();
String
modifiedRequestPath
=
"/api"
+
originalRequestPath
;
if
(
domainApis
.
length
>
0
)
{
log
.
info
(
"modifiedRequestPath is {}"
,
modifiedRequestPath
);
for
(
int
i
=
0
;
i
<
domainApis
.
length
;
i
++)
{
ctx
.
put
(
FilterConstants
.
REQUEST_URI_KEY
,
modifiedRequestPath
);
String
itemInfo
=
domainApis
[
i
];
ctx
.
set
(
FilterConstants
.
SERVICE_ID_KEY
,
"micro-project-as-pay-operation"
);
if
(
StringUtils
.
isNotEmpty
(
itemInfo
))
{
}
else
if
(
url
.
contains
(
"backmch"
))
{
String
[]
info
=
itemInfo
.
split
(
":"
);
String
modifiedRequestPath
=
"/mch"
+
originalRequestPath
;
String
domain
=
info
[
0
];
log
.
info
(
"modifiedRequestPath is {}"
,
modifiedRequestPath
);
String
serviceRote
=
info
[
1
];
ctx
.
put
(
FilterConstants
.
REQUEST_URI_KEY
,
modifiedRequestPath
);
String
serviceId
=
info
[
2
];
ctx
.
set
(
FilterConstants
.
SERVICE_ID_KEY
,
"micro-project-as-pay-merchant"
);
if
(
url
.
contains
(
domain
))
{
String
modifiedRequestPath
=
"/"
+
serviceRote
+
originalRequestPath
;
log
.
info
(
"modifiedRequestPath is {}"
,
modifiedRequestPath
);
ctx
.
put
(
FilterConstants
.
REQUEST_URI_KEY
,
modifiedRequestPath
);
ctx
.
set
(
FilterConstants
.
SERVICE_ID_KEY
,
serviceId
);
}
}
}
}
}
return
null
;
return
null
;
}
}
...
...
src/main/resources/application-dev.yml
View file @
44c4aab2
...
@@ -2,6 +2,8 @@ spring:
...
@@ -2,6 +2,8 @@ spring:
datasource
:
datasource
:
druid
:
druid
:
url
:
jdbc:mysql://172.30.10.177:3306/micro_security?useUnicode=true&characterEncoding=UTF-8&useSSL=false
url
:
jdbc:mysql://172.30.10.177:3306/micro_security?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username
:
root
password
:
123456
redis
:
redis
:
host
:
127.0.0.1
host
:
127.0.0.1
...
...
src/main/resources/application-test.yml
View file @
44c4aab2
...
@@ -2,3 +2,5 @@ spring:
...
@@ -2,3 +2,5 @@ spring:
datasource
:
datasource
:
druid
:
druid
:
url
:
jdbc:mysql://172.30.10.127:3306/micro_security?useUnicode=true&characterEncoding=UTF-8&useSSL=false
url
:
jdbc:mysql://172.30.10.127:3306/micro_security?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username
:
root
password
:
123456
src/main/resources/application.yml
View file @
44c4aab2
...
@@ -61,7 +61,7 @@ zuul:
...
@@ -61,7 +61,7 @@ zuul:
payfake
:
payfake
:
path
:
/pay/searchorder/**
path
:
/pay/searchorder/**
serviceId
:
micro-project-scheduler-pay-fake
serviceId
:
micro-project-scheduler-pay-fake
stripPrefix
:
tru
e
stripPrefix
:
fals
e
login
:
login
:
path
:
/login/**
path
:
/login/**
url
:
forward:/login
url
:
forward:/login
...
@@ -76,4 +76,11 @@ zuul:
...
@@ -76,4 +76,11 @@ zuul:
url
:
forward:/sys
url
:
forward:/sys
all
:
all
:
path
:
/**
path
:
/**
serviceId
:
micro-project-as-pay-operation
serviceId
:
micro-project-as-pay-operation
\ No newline at end of file
#自定义url-zuul过滤条件, 对请求进行筛选是否进入过滤器
url-filter
:
name
:
com.ost.micro.filter.UrlFilter
# url 中包含如下关键字这不会进入过滤器
urlExclude
:
login,logout,captcha,webjars,druid,swagger,/v2/api-docs,swagger-ui.html,swagger-resources,service,editor-app,diagram-viewer,modeler.html,favicon.ico,sys,actuator,searchorder
# 根据域名分发到下游服务
domains
:
backstage:api:micro-project-as-pay-operation,backmch:mch:micro-project-as-pay-merchant
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