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)