From 2d6e49372c620287ae11eccd582b6f8dbc8b7126 Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Fri, 15 Aug 2025 11:46:56 +0800 Subject: [PATCH] fix(auth): remove token parameter from URL after sign-in successfully (#7386) --- .../plugin-auth/src/client/AuthProvider.tsx | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/packages/plugins/@nocobase/plugin-auth/src/client/AuthProvider.tsx b/packages/plugins/@nocobase/plugin-auth/src/client/AuthProvider.tsx index 85ab4b286cc..20a990cf7d9 100644 --- a/packages/plugins/@nocobase/plugin-auth/src/client/AuthProvider.tsx +++ b/packages/plugins/@nocobase/plugin-auth/src/client/AuthProvider.tsx @@ -7,19 +7,35 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import { useApp, useLocationSearch } from '@nocobase/client'; +import { useApp } from '@nocobase/client'; import React, { useEffect } from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; export const AuthProvider: React.FC = (props) => { - const searchString = useLocationSearch(); const app = useApp(); - const params = new URLSearchParams(searchString); - const authenticator = params.get('authenticator'); - const token = params.get('token'); - if (token) { - app.apiClient.auth.setToken(token); - app.apiClient.auth.setAuthenticator(authenticator); - } + const navigate = useNavigate(); + const location = useLocation(); + + useEffect(() => { + const params = new URLSearchParams(location.search); + const authenticator = params.get('authenticator'); + const token = params.get('token'); + + if (token) { + app.apiClient.auth.setToken(token); + app.apiClient.auth.setAuthenticator(authenticator); + + params.delete('token'); + const newSearch = params.toString(); + navigate( + { + pathname: location.pathname, + search: newSearch ? `?${newSearch}` : '', + }, + { replace: true }, + ); + } + }, [location.search, app, navigate, location.pathname]); return <>{props.children}; };