From c320e8951fa451d5d60620753f509961d6513e64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AF=BB=E6=AC=A2?= Date: Thu, 24 Apr 2025 17:21:00 +0800 Subject: [PATCH] =?UTF-8?q?:refactor:=20=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84getProtocol=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E7=AE=80=E5=8C=96=E5=9B=9E=E8=B0=83URL=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/handler/logto.go | 43 ++++++++------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/internal/handler/logto.go b/internal/handler/logto.go index ea23ee9..02df987 100644 --- a/internal/handler/logto.go +++ b/internal/handler/logto.go @@ -2,7 +2,6 @@ package handler import ( "net/http" - "strings" "time" "gitee.ltd/lxh/wechat-robot/internal/types" @@ -16,29 +15,10 @@ import ( // 实现Logto会话存储接口 var store = session.New(session.Config{ - KeyLookup: "cookie:logto-session", - CookieSecure: false, // 开发环境可设成false - CookieHTTPOnly: true, - // 可以配置 CookieSecret + KeyLookup: "cookie:logto-session", + CookieSecure: false, // 开发环境可设成false }) -// getProtocol -// @description: 获取请求协议 -// @param c -// @return string -func getProtocol(c *fiber.Ctx) string { - protocol := c.Protocol() - for k, v := range c.GetReqHeaders() { - if strings.ToLower(k) == "referer" { - refererProtocol := strings.Split(v[0], ":")[0] - if refererProtocol != protocol { - protocol = refererProtocol - } - } - } - return protocol -} - // LogtoLogin 重定向到Logto登录页面 func LogtoLogin(c *fiber.Ctx) error { // 加载配置 @@ -48,8 +28,8 @@ func LogtoLogin(c *fiber.Ctx) error { } // 构建回调URL - - callbackURL := getProtocol(c) + "://" + c.Hostname() + "/auth/logto/callback" + callbackURL := c.Protocol() + "://" + c.Hostname() + "/auth/logto/callback" + //callbackURL := "https://wechat.0bug.dev/auth/logto/callback" // 创建Logto客户端配置 logtoConfig := &logtoClient.LogtoConfig{ @@ -62,14 +42,8 @@ func LogtoLogin(c *fiber.Ctx) error { // 创建Logto客户端 client := logtoClient.NewLogtoClient(logtoConfig, fiberSessionStorage) - - // 创建登录选项,确保包含正确的回调URL - signInOptions := &logtoClient.SignInOptions{ - RedirectUri: callbackURL, - } - - // 获取登录链接并重定向 - signInUri, err := client.SignIn(signInOptions) + // 获取登录链接 + signInUri, err := client.SignInWithRedirectUri(callbackURL) if err != nil { return c.Redirect("/error?error=Logto登录错误: " + err.Error() + "。请在Logto控制台确认回调URI为: " + callbackURL) } @@ -102,8 +76,7 @@ func LogtoCallback(c *fiber.Ctx) error { } // 处理回调 - err = client.HandleSignInCallback(r) - if err != nil { + if err = client.HandleSignInCallback(r); err != nil { return c.Redirect("/error?error=Logto回调处理错误: " + err.Error()) } @@ -140,7 +113,7 @@ func LogtoLogout(c *fiber.Ctx) error { client := logtoClient.NewLogtoClient(logtoConfig, fiberSessionStorage) // 构建登出后重定向URL - postLogoutRedirectURL := getProtocol(c) + "://" + c.Hostname() + postLogoutRedirectURL := c.Protocol() + "://" + c.Hostname() // 获取登出链接 signOutUri, err := client.SignOut(postLogoutRedirectURL)