From bbe241348eb7cdafa527aa4f0c55530fa623db84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BD=9E?= <1617530133@qq.com> Date: Sat, 7 Nov 2026 11:24:34 +0800 Subject: [PATCH] fix: preserve skill deep link through login flow --- index.html | 5 +++++ login/main.ts | 24 ++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index ebb3fdd..cb3a1f1 100644 --- a/index.html +++ b/index.html @@ -1376,6 +1376,11 @@ window.location.href = dest; return; } + try { + sessionStorage.setItem("post_login_redirect", dest); + } catch (error) { + console.warn("sessionStorage unavailable", error); + } const params = new URLSearchParams({ v: "20261107", redirect: dest }); window.location.href = "/login/?" + params.toString(); } diff --git a/login/main.ts b/login/main.ts index 00bc4b1..2b0de6b 100644 --- a/login/main.ts +++ b/login/main.ts @@ -71,10 +71,30 @@ function renderQrCode(): void { } // 只接受站内绝对路径,避免 ?redirect= 被当作开放重定向 +function consumePostLoginRedirect(): string { + try { + const stored = sessionStorage.getItem('post_login_redirect') + if (stored && stored.startsWith('/') && !stored.startsWith('//')) { + sessionStorage.removeItem('post_login_redirect') + return stored + } + } catch (error) { + console.warn('读取登录后跳转地址失败', error) + } + return '' +} + function redirectTarget(): string { const redirect = new URLSearchParams(window.location.search).get('redirect') - if (redirect && redirect.startsWith('/') && !redirect.startsWith('//')) return redirect - return '/generate' + if (redirect && redirect.startsWith('/') && !redirect.startsWith('//')) { + try { + sessionStorage.removeItem('post_login_redirect') + } catch (error) { + console.warn('清理登录后跳转地址失败', error) + } + return redirect + } + return consumePostLoginRedirect() || '/generate' } async function cacheTeam(token: string): Promise {