From fe7ce27a943cf66232ea67d6f853ce697e1cc3a3 Mon Sep 17 00:00:00 2001
From: zhangdaiscott <zhangdaiscott@163.com>
Date: Tue, 19 Jul 2022 23:03:15 +0800
Subject: [PATCH] 【示例】sentinel ip和参数授权规则拦截器(黑名单白名单)

---
 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java
index 6a9d5c0..63ba43a 100644
--- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java
+++ b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java
@@ -1,12 +1,17 @@
 package org.jeecg.starter.cloud.interceptor;
 
 import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.util.IpUtils;
 import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletRequest;
 
 /**
- * sentinel 授权规则拦截器
+ * 【示例】sentinel ip和参数授权规则拦截器(黑名单白名单)
+ * 1. 有参数origin的时候走参数拦截规则
+ * 2. 当参数为空时走ip拦截模式
+ *
  * @author zyf
  */
 @Component
@@ -15,8 +20,12 @@ public class DefaultRequestOriginParser implements RequestOriginParser {
     public String parseOrigin(HttpServletRequest request) {
         //基于请求参数,origin对应授权规则中的流控应用名称,也可通过getHeader传参
         String origin = request.getParameter("origin");
-
-        //TODO 此处做个通过IP做白名单的例子
-        return origin;
+        if (StringUtils.isNotEmpty(origin)) {
+            return origin;
+        } else {
+            //当参数为空使用ip拦截模式
+            String ip = IpUtils.getIpAddr(request);
+            return ip;
+        }
     }
 }
--
libgit2 0.22.2