From 84cc69dad33d1edfe6f371853810dd6f43c6bd86 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Wed, 14 Jan 2026 17:08:00 +0800
Subject: [PATCH] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=E7=99=BB=E9=99=86?=
=?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E7=9A=84=E9=A1=B5=E9=9D=A2=E5=9C=B0?=
=?UTF-8?q?=E5=9D=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../web/DangerOperationController.java | 16 +++++++++++-----
.../src/main/resources/templates/form.html | 8 ++++++++
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java
index 5a0a2c35d..10a4cc6b1 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java
@@ -234,8 +234,12 @@ public class DangerOperationController {
@GetMapping("/web/process/dingtalk-callback")
public String dingTalkCallback(@RequestParam("authCode") String authCode, HttpSession session, Model model, javax.servlet.http.HttpServletRequest request) {
log.info("收到钉钉登录回调, authCode: {}", authCode);
+ String myPodNamespace = environment.getProperty(K8S_POD_NAME_SPACE);
+ String baseUrl = StringUtils.hasText(myPodNamespace) ? "/workflow-engine" : "";
+ model.addAttribute("apiBaseUrl", baseUrl);
+ model.addAttribute("dingTalkAppKey", appKey);
- // 如果没有配置 AppSecret,则无法进行后续交互,直接返回错误(或者为了测试方便这里可以留个后门? 不,严格处理)
+ // 如果没有配置 AppSecret,则无法进行后续交互
if (!StringUtils.hasText(appSecret)) {
log.error("DingTalk AppSecret not configured");
model.addAttribute("authError", "服务端未配置 AppSecret,无法登录");
@@ -244,7 +248,6 @@ public class DangerOperationController {
try {
// 1. 获取 AccessToken
- // 文档: https://open.dingtalk.com/document/isvapp/obtain-user-token
JSONObject tokenParams = new JSONObject();
tokenParams.put("clientId", appKey);
tokenParams.put("clientSecret", appSecret);
@@ -268,7 +271,6 @@ public class DangerOperationController {
}
// 2. 获取用户详情
- // 文档: https://open.dingtalk.com/document/isvapp/obtain-user-information
String userInfoResponse = HttpRequest.get("https://api.dingtalk.com/v1.0/contact/users/me")
.header("x-acs-dingtalk-access-token", accessToken)
.timeout(5000)
@@ -292,12 +294,16 @@ public class DangerOperationController {
return "form";
}
-
// 3. 登录成功
log.info("DingTalk Login Success: nick={}, mobile={}", nick, mobile);
session.setAttribute("isAuthenticated", true);
- // 可以把用户信息也存进去
session.setAttribute("dingUser", userJson);
+ model.addAttribute("userNick", nick);
+ model.addAttribute("isAuthenticated", true);
+
+ // 新增:添加重定向URL到Model,让前端JS执行跳转
+ model.addAttribute("redirectUrl", baseUrl + "/web/process/form");
+
return "form";
} catch (Exception e) {
diff --git a/workflow-engine-server/src/main/resources/templates/form.html b/workflow-engine-server/src/main/resources/templates/form.html
index d69d28f3c..8489e7993 100644
--- a/workflow-engine-server/src/main/resources/templates/form.html
+++ b/workflow-engine-server/src/main/resources/templates/form.html
@@ -303,6 +303,14 @@
+
+