From 05dcaedfae5503502a1df51be1ebd89b5b6ca254 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Fri, 6 Sep 2024 20:12:21 +0800
Subject: [PATCH] 'commit'
---
ds-gw/pom.xml | 5 ++
.../gw/Index/Controller/ApiController.java | 49 +++++++++++++++++++
.../gw/Index/Controller/IndexController.java | 5 +-
.../gw/Interceptor/AuthInterceptor.java | 25 ++++++++++
ds-gw/src/main/java/com/dsideal/gw/Start.java | 5 +-
pom.xml | 2 +
6 files changed, 86 insertions(+), 5 deletions(-)
create mode 100644 ds-gw/src/main/java/com/dsideal/gw/Index/Controller/ApiController.java
create mode 100644 ds-gw/src/main/java/com/dsideal/gw/Interceptor/AuthInterceptor.java
diff --git a/ds-gw/pom.xml b/ds-gw/pom.xml
index 10478422..e9533fc9 100644
--- a/ds-gw/pom.xml
+++ b/ds-gw/pom.xml
@@ -60,5 +60,10 @@
log4j
${log4j.version}
+
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp.version}
+
diff --git a/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/ApiController.java b/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/ApiController.java
new file mode 100644
index 00000000..05477a33
--- /dev/null
+++ b/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/ApiController.java
@@ -0,0 +1,49 @@
+package com.dsideal.gw.Index.Controller;
+import com.jfinal.core.Controller;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
+import java.io.IOException;
+
+public class ApiController extends Controller {
+
+ private OkHttpClient client = new OkHttpClient();
+
+ public void index() {
+ String path = getPara(); // 获取请求路径
+ String serviceUrl = route(path); // 根据路径决定转发到哪个微服务
+
+ if (serviceUrl == null) {
+ renderJson("error", "Service not found");
+ return;
+ }
+
+ try {
+ Request request = new Request.Builder()
+ .url(serviceUrl)
+ .header("Authorization", getHeader("Authorization"))
+ .build();
+
+ Response response = client.newCall(request).execute();
+ if (response.isSuccessful()) {
+ renderJson(response.body().string());
+ } else {
+ renderJson("error", "Service request failed");
+ }
+ } catch (IOException e) {
+ renderJson("error", "Exception occurred: " + e.getMessage());
+ }
+ }
+
+ private String route(String path) {
+ // 根据路径决定转发到哪个微服务
+ // 这里可以根据具体的路径或者配置文件来路由
+ if (path.startsWith("/service1")) {
+ return "http://localhost:8081" + path; // 微服务1的地址
+ } else if (path.startsWith("/service2")) {
+ return "http://localhost:8082" + path; // 微服务2的地址
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/IndexController.java b/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/IndexController.java
index 7c09dff3..fba22803 100644
--- a/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/IndexController.java
+++ b/ds-gw/src/main/java/com/dsideal/gw/Index/Controller/IndexController.java
@@ -6,8 +6,5 @@ import com.jfinal.ext.interceptor.GET;
public class IndexController extends Controller {
- @Before({GET.class})
- public void index() {
- renderText("Welcome to JFinal World!");
- }
+
}
\ No newline at end of file
diff --git a/ds-gw/src/main/java/com/dsideal/gw/Interceptor/AuthInterceptor.java b/ds-gw/src/main/java/com/dsideal/gw/Interceptor/AuthInterceptor.java
new file mode 100644
index 00000000..c9472962
--- /dev/null
+++ b/ds-gw/src/main/java/com/dsideal/gw/Interceptor/AuthInterceptor.java
@@ -0,0 +1,25 @@
+package com.dsideal.gw.Interceptor;
+
+import com.jfinal.aop.Interceptor;
+import com.jfinal.aop.Invocation;
+import com.jfinal.core.Controller;
+
+public class AuthInterceptor implements Interceptor {
+ @Override
+ public void intercept(Invocation inv) {
+ Controller controller = inv.getController();
+ String token = controller.getHeader("Authorization");
+
+ // 这里添加你的鉴权逻辑,例如检查 token 是否有效
+ if (!isValidToken(token)) {
+ controller.renderJson("error", "Unauthorized");
+ } else {
+ inv.invoke();
+ }
+ }
+
+ private boolean isValidToken(String token) {
+ // 添加你的 token 验证逻辑
+ return "valid-token".equals(token);
+ }
+}
\ No newline at end of file
diff --git a/ds-gw/src/main/java/com/dsideal/gw/Start.java b/ds-gw/src/main/java/com/dsideal/gw/Start.java
index 2d9821b5..cda870b3 100644
--- a/ds-gw/src/main/java/com/dsideal/gw/Start.java
+++ b/ds-gw/src/main/java/com/dsideal/gw/Start.java
@@ -1,7 +1,9 @@
package com.dsideal.gw;
import cn.hutool.core.io.FileUtil;
+import com.dsideal.gw.Index.Controller.ApiController;
import com.dsideal.gw.Index.Controller.IndexController;
+import com.dsideal.gw.Interceptor.AuthInterceptor;
import com.dsideal.gw.Util.LogBackLogFactory;
import com.jfinal.config.*;
import com.jfinal.kit.PropKit;
@@ -44,6 +46,7 @@ public class Start extends JFinalConfig {
public void configRoute(Routes me) {
//默认页面
me.add("/", IndexController.class);
+ me.add("/api", ApiController.class);
}
@Override
@@ -62,7 +65,7 @@ public class Start extends JFinalConfig {
*/
@Override
public void configInterceptor(Interceptors me) {
-
+ me.addGlobalActionInterceptor(new AuthInterceptor());
}
/**
diff --git a/pom.xml b/pom.xml
index 12e7ed76..33acff4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,5 +57,7 @@
1.7.36
1.2.17
+
+ 4.12.0
\ No newline at end of file