线上环境首页重定向bug修复
This commit is contained in:
@@ -17,19 +17,20 @@ import useStore from './store/useStore';
|
||||
const ProtectedRoute = ({ children, requireAuth = false, requireOnboarding = false }) => {
|
||||
const { isLoggedIn, registrationData } = useStore();
|
||||
const navigate = useNavigate();
|
||||
const hasToken = !!localStorage.getItem('access_token');
|
||||
|
||||
// 检查是否完成入站流程(有昵称和未来愿景即视为已完成)
|
||||
const hasCompletedOnboarding = !!(registrationData.nickname && registrationData.future?.vision);
|
||||
|
||||
useEffect(() => {
|
||||
if (requireAuth && !isLoggedIn) {
|
||||
if (requireAuth && (!isLoggedIn || !hasToken)) {
|
||||
navigate('/', { replace: true });
|
||||
} else if (requireOnboarding && !hasCompletedOnboarding) {
|
||||
navigate('/onboarding', { replace: true });
|
||||
}
|
||||
}, [isLoggedIn, hasCompletedOnboarding, requireAuth, requireOnboarding, navigate]);
|
||||
}, [isLoggedIn, hasCompletedOnboarding, requireAuth, requireOnboarding, hasToken, navigate]);
|
||||
|
||||
if (requireAuth && !isLoggedIn) {
|
||||
if (requireAuth && (!isLoggedIn || !hasToken)) {
|
||||
return <Loader text="正在验证身份..." />;
|
||||
}
|
||||
|
||||
@@ -66,6 +67,7 @@ const PageTransition = ({ children }) => {
|
||||
const AnimatedRoutes = () => {
|
||||
const location = useLocation();
|
||||
const { isLoggedIn, registrationData } = useStore();
|
||||
const hasToken = !!localStorage.getItem('access_token');
|
||||
|
||||
// 检查是否完成入站流程(有昵称和未来愿景即视为已完成)
|
||||
const hasCompletedOnboarding = !!(registrationData.nickname && registrationData.future?.vision);
|
||||
@@ -77,7 +79,7 @@ const AnimatedRoutes = () => {
|
||||
<Route
|
||||
path="/"
|
||||
element={
|
||||
isLoggedIn ? (
|
||||
(isLoggedIn && hasToken) ? (
|
||||
hasCompletedOnboarding ? (
|
||||
<Navigate to="/dashboard" replace />
|
||||
) : (
|
||||
@@ -130,8 +132,8 @@ const AnimatedRoutes = () => {
|
||||
* App 主组件
|
||||
*/
|
||||
function App() {
|
||||
// 生产环境使用 /course-of-life 作为基础路径
|
||||
const basename = import.meta.env.PROD ? '/course-of-life' : '';
|
||||
// 使用 Vite 的 BASE_URL 并移除末尾斜杠,确保 BrowserRouter basename 兼容
|
||||
const basename = (import.meta.env.BASE_URL || '/').replace(/\/$/, '');
|
||||
|
||||
return (
|
||||
<BrowserRouter basename={basename}>
|
||||
|
||||
Reference in New Issue
Block a user