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