Commit fe7ce27a943cf66232ea67d6f853ce697e1cc3a3
1 parent
956b1c21
【示例】sentinel ip和参数授权规则拦截器(黑名单白名单)
Showing
1 changed file
with
13 additions
and
4 deletions
jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java
1 | 1 | package org.jeecg.starter.cloud.interceptor; |
2 | 2 | |
3 | 3 | import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser; |
4 | +import org.apache.commons.lang3.StringUtils; | |
5 | +import org.jeecg.common.util.IpUtils; | |
4 | 6 | import org.springframework.stereotype.Component; |
5 | 7 | |
6 | 8 | import javax.servlet.http.HttpServletRequest; |
7 | 9 | |
8 | 10 | /** |
9 | - * sentinel 授权规则拦截器 | |
11 | + * 【示例】sentinel ip和参数授权规则拦截器(黑名单白名单) | |
12 | + * 1. 有参数origin的时候走参数拦截规则 | |
13 | + * 2. 当参数为空时走ip拦截模式 | |
14 | + * | |
10 | 15 | * @author zyf |
11 | 16 | */ |
12 | 17 | @Component |
... | ... | @@ -15,8 +20,12 @@ public class DefaultRequestOriginParser implements RequestOriginParser { |
15 | 20 | public String parseOrigin(HttpServletRequest request) { |
16 | 21 | //基于请求参数,origin对应授权规则中的流控应用名称,也可通过getHeader传参 |
17 | 22 | String origin = request.getParameter("origin"); |
18 | - | |
19 | - //TODO 此处做个通过IP做白名单的例子 | |
20 | - return origin; | |
23 | + if (StringUtils.isNotEmpty(origin)) { | |
24 | + return origin; | |
25 | + } else { | |
26 | + //当参数为空使用ip拦截模式 | |
27 | + String ip = IpUtils.getIpAddr(request); | |
28 | + return ip; | |
29 | + } | |
21 | 30 | } |
22 | 31 | } |
... | ... |