Commit fe7ce27a943cf66232ea67d6f853ce697e1cc3a3

Authored by zhangdaiscott
1 parent 956b1c21

【示例】sentinel ip和参数授权规则拦截器(黑名单白名单)

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 }
... ...