feat: 本次提交更新内容如下
修正完成
This commit is contained in:
10
Layout.css
10
Layout.css
@@ -1,10 +0,0 @@
|
|||||||
.container {
|
|
||||||
display: flex;
|
|
||||||
height: 100vh;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container main {
|
|
||||||
flex: 1;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
35
Layout.tsx
35
Layout.tsx
@@ -1,35 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
|
|
||||||
interface LayoutProps {
|
|
||||||
loading?: boolean;
|
|
||||||
children?: React.ReactNode;
|
|
||||||
header?: React.ReactNode;
|
|
||||||
footer?: React.ReactNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Layout: React.FC<LayoutProps> = ({
|
|
||||||
loading,
|
|
||||||
children,
|
|
||||||
header,
|
|
||||||
footer
|
|
||||||
}) => {
|
|
||||||
return (
|
|
||||||
<div className="container">
|
|
||||||
{header && (
|
|
||||||
<header>
|
|
||||||
{header}
|
|
||||||
</header>
|
|
||||||
)}
|
|
||||||
<main>
|
|
||||||
{children}
|
|
||||||
</main>
|
|
||||||
{footer && (
|
|
||||||
<footer>
|
|
||||||
{footer}
|
|
||||||
</footer>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Layout;
|
|
||||||
@@ -32,6 +32,17 @@ export default function Login() {
|
|||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
const { login } = useAuth();
|
const { login } = useAuth();
|
||||||
|
|
||||||
|
// 检查URL是否为登录页面
|
||||||
|
const isLoginPage = (url: string) => {
|
||||||
|
try {
|
||||||
|
const urlObj = new URL(url, window.location.origin);
|
||||||
|
return urlObj.pathname === '/login' || urlObj.pathname.endsWith('/login');
|
||||||
|
} catch {
|
||||||
|
// 如果URL格式不正确,返回false
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// 倒计时效果
|
// 倒计时效果
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (countdown > 0) {
|
if (countdown > 0) {
|
||||||
@@ -132,7 +143,13 @@ export default function Login() {
|
|||||||
// 跳转到首页或重定向URL
|
// 跳转到首页或重定向URL
|
||||||
const returnUrl = searchParams.get('returnUrl');
|
const returnUrl = searchParams.get('returnUrl');
|
||||||
if (returnUrl) {
|
if (returnUrl) {
|
||||||
navigate(decodeURIComponent(returnUrl));
|
const decodedUrl = decodeURIComponent(returnUrl);
|
||||||
|
// 检查重定向URL是否为登录页面,避免无限重定向
|
||||||
|
if (isLoginPage(decodedUrl)) {
|
||||||
|
navigate('/');
|
||||||
|
} else {
|
||||||
|
window.location.href = decodedUrl;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
navigate('/');
|
navigate('/');
|
||||||
}
|
}
|
||||||
@@ -164,7 +181,13 @@ export default function Login() {
|
|||||||
// 跳转到首页或重定向URL
|
// 跳转到首页或重定向URL
|
||||||
const returnUrl = searchParams.get('returnUrl');
|
const returnUrl = searchParams.get('returnUrl');
|
||||||
if (returnUrl) {
|
if (returnUrl) {
|
||||||
navigate(decodeURIComponent(returnUrl));
|
const decodedUrl = decodeURIComponent(returnUrl);
|
||||||
|
// 检查重定向URL是否为登录页面,避免无限重定向
|
||||||
|
if (isLoginPage(decodedUrl)) {
|
||||||
|
navigate('/');
|
||||||
|
} else {
|
||||||
|
window.location.href = decodedUrl;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
navigate('/');
|
navigate('/');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user