From 2f064af6896cca1a3448bd257402b101e7366561 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 30 Mar 2026 01:08:08 +0800 Subject: [PATCH] fix: use stable callback redirect_uri for oidc login --- src/pages/AuthCallbackPage.vue | 5 +++-- src/pages/LoginPage.vue | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pages/AuthCallbackPage.vue b/src/pages/AuthCallbackPage.vue index ebafd74..d499733 100644 --- a/src/pages/AuthCallbackPage.vue +++ b/src/pages/AuthCallbackPage.vue @@ -29,17 +29,18 @@ const error = ref('') onMounted(async () => { const code = route.query.code - const redirect = route.query.redirect || '/me' + const redirect = sessionStorage.getItem('post_login_redirect') || '/me' if (!code || typeof code !== 'string') { error.value = '缺少授權碼,請重新登入' return } try { - const callbackUrl = `${window.location.origin}/auth/callback?redirect=${encodeURIComponent(redirect)}` + const callbackUrl = `${window.location.origin}/auth/callback` const res = await exchangeOidcCode(code, callbackUrl) authStore.setToken(res.data.access_token) await authStore.fetchMe() + sessionStorage.removeItem('post_login_redirect') router.replace(typeof redirect === 'string' ? redirect : '/me') } catch (err) { authStore.logout() diff --git a/src/pages/LoginPage.vue b/src/pages/LoginPage.vue index 948cb32..4087fc4 100644 --- a/src/pages/LoginPage.vue +++ b/src/pages/LoginPage.vue @@ -48,7 +48,8 @@ async function handleOidcLogin() { error.value = '' try { const redirect = route.query.redirect || '/me' - const callbackUrl = `${window.location.origin}/auth/callback?redirect=${encodeURIComponent(redirect)}` + sessionStorage.setItem('post_login_redirect', typeof redirect === 'string' ? redirect : '/me') + const callbackUrl = `${window.location.origin}/auth/callback` const res = await getOidcAuthorizeUrl(callbackUrl) window.location.href = res.data.authorize_url } catch (err) {