优化OAuth客户端的日志输出,增强调试信息;修复获取访问令牌时的端口配置,确保回调地址正确;更新API配置中的服务器地址和端口。

This commit is contained in:
2025-08-06 16:53:46 +08:00
parent 1b5f7ac50a
commit 21c01d51d5
4 changed files with 77 additions and 29 deletions
+24 -12
View File
@@ -3,45 +3,57 @@ import { OAuthClient } from "~/api/login/oauth-client";
import { OAUTH_CONFIG } from "~/config/api-config";
import { createUserSession, saveUserInfo } from "~/api/login/auth.server";
import { JWTUtils, type UserInfoForJWT } from "~/utils/jwt";
import { toastService } from "~/components/ui";
export async function loader({ request }: LoaderFunctionArgs) {
const url = new URL(request.url);
const code = url.searchParams.get("code");
// const state = url.searchParams.get("state");
const state = url.searchParams.get("state");
const error = url.searchParams.get("error");
const error_description = url.searchParams.get("error_description");
console.log("🔧 OAuth2.0回调参数:", {
code: code ? `${code.substring(0, 10)}...` : null,
state: state,
error: error,
error_description: error_description,
fullUrl: request.url
});
// 检查是否有错误
if (error) {
console.error("OAuth2.0授权失败:", error, error_description);
console.error("OAuth2.0授权失败:", error, error_description);
return redirect(`/login?error=${encodeURIComponent(error_description || error)}`);
}
// 检查是否有授权码
if (!code) {
toastService.error("通过OAuth2.0登录回调缺少授权码");
console.error("OAuth2.0回调缺少授权码");
console.error("OAuth2.0回调缺少授权码");
return redirect("/login?error=missing_code");
}
// 验证状态值(可选,但建议实现)
// 这里简单验证state是否以_idp结尾
// if (!state || !state.endsWith("_idp")) {
// console.error("OAuth2.0状态值验证失败");
// return redirect("/login?error=invalid_state");
// }
// 验证状态值
if (!state || !state.endsWith("_idp")) {
console.error("❌ OAuth2.0状态值验证失败:", { state, expectedSuffix: "_idp" });
return redirect("/login?error=invalid_state");
}
console.log("✅ OAuth2.0回调参数验证通过");
try {
console.log("🔧 开始处理OAuth2.0回调");
// 创建OAuth客户端
const oauthClient = new OAuthClient(OAUTH_CONFIG);
console.log("✅ OAuth客户端创建成功");
// 获取访问令牌
console.log("🔧 开始获取访问令牌...");
const tokenResponse = await oauthClient.getAccessToken(code);
if (!tokenResponse) {
console.error("获取访问令牌失败");
console.error("获取访问令牌失败");
return redirect("/login?error=token_error");
}
console.log("✅ 访问令牌获取成功");
// 获取用户信息
const userInfo = await oauthClient.getUserInfo(tokenResponse.access_token);
+1 -1
View File
@@ -120,7 +120,7 @@ export default function Login() {
// 获取授权URL
const authorizeUrl = oauthClient.getAuthorizeUrl(state);
console.log("授权URL:", authorizeUrl);
// 重定向到IDaaS登录页面
window.location.href = authorizeUrl;
} catch (error) {