前段

Change-Id: I718d4d07ea03c6d2b6bcbd4d426c5d1af2201bf4
diff --git a/src/App.jsx b/src/App.jsx
new file mode 100644
index 0000000..66042bc
--- /dev/null
+++ b/src/App.jsx
@@ -0,0 +1,140 @@
+// src/App.jsx
+import React from 'react';
+import { 
+  BrowserRouter as Router,
+  Routes,
+  Route,
+  Navigate
+} from 'react-router-dom';
+import Dashboard from './components/Dashboard';
+import Personal from './components/Personal/Personal';
+import AuthForm from './components/AuthForm';
+import AnnouncementDetail from './components/AnnouncementDetail';
+
+import TorrentDetail from './components/TorrentDetail'; // 确保路径正确
+import RequestDetail from './components/RequestDetail';
+import HelpDetail from './components/HelpDetail';
+import Favorite from './components/Personal/Favorite';
+import Upload from './components/Personal/Upload';
+import Notice from './components/Personal/Notice';
+import Setting from './components/Personal/Setting';
+
+import './App.css';
+
+function App() {
+  // 每次应用启动时强制清除 token
+  React.useEffect(() => {
+    localStorage.removeItem('token');
+    console.log('Token cleared on app startup');
+    localStorage.removeItem('username');
+  }, []); // 空依赖数组表示只在组件挂载时执行一次
+
+  const [isAuthenticated, setIsAuthenticated] = React.useState(
+    false
+  );
+
+  const handleLoginSuccess = (token) => {
+    setIsAuthenticated(true);
+  };
+
+  const handleLogout = () => {
+    localStorage.removeItem('token');
+    setIsAuthenticated(false);
+  };
+
+  return (
+    <Router>
+      <Routes>
+        {/* 修改点1:根路径强制跳转到登录页 */}
+        <Route path="/" element={<Navigate to="/login" replace />} />
+
+        {/* 登录页 */}
+        <Route path="/login" element={
+          isAuthenticated ? (
+            <Navigate to="/dashboard" replace />
+          ) : (
+            <AuthForm onLoginSuccess={handleLoginSuccess} />
+          )
+        } />
+
+        {/* 主面板 */}
+        <Route path="/dashboard/:tab?" element={
+          isAuthenticated ? (
+            <Dashboard onLogout={handleLogout} />
+          ) : (
+            <Navigate to="/login" replace />
+          )
+        } />
+
+        {/* 公告详情 */}
+        <Route path="/announcement/:id" element={
+          isAuthenticated ? (
+            <AnnouncementDetail onLogout={handleLogout} />
+          ) : (
+            <Navigate to="/login" replace />
+          )
+        } />
+
+        {/* 个人中心及子功能页面 */}
+        <Route path="/personal" element={
+          isAuthenticated ? <Personal onLogout={handleLogout} /> : <Navigate to="/login" replace />
+        } />
+        <Route path="/personal/favorite" element={
+          isAuthenticated ? <Favorite onLogout={handleLogout} /> : <Navigate to="/login" replace />
+        } />
+        <Route path="/personal/upload" element={
+          isAuthenticated ? <Upload onLogout={handleLogout} /> : <Navigate to="/login" replace />
+        } />
+        <Route path="/personal/notice" element={
+          isAuthenticated ? <Notice onLogout={handleLogout} /> : <Navigate to="/login" replace />
+        } />
+        <Route path="/personal/setting" element={
+          isAuthenticated ? <Setting onLogout={handleLogout} /> : <Navigate to="/login" replace />
+        } />
+
+        
+        {/* 404 重定向 */}
+        <Route path="*" element={
+          isAuthenticated ? (
+            <Navigate to="/dashboard" replace />
+          ) : (
+            <Navigate to="/login" replace />
+          )
+        } />
+
+        {/* 求种区 */}
+        <Route path="/request/:id" element={
+          isAuthenticated ? (
+            <RequestDetail onLogout={handleLogout} />
+          ) : (
+            <Navigate to="/login" replace />
+          )
+        } />
+
+        {/* 求助区 */}
+        <Route path="/help/:id" element={
+          isAuthenticated ? (
+            <HelpDetail onLogout={handleLogout} />
+          ) : (
+            <Navigate to="/login" replace />
+          )
+        } />
+
+        <Route path="/torrent/:id" element={
+          isAuthenticated ? (
+            <TorrentDetail onLogout={handleLogout} />
+          ) : (
+            <Navigate to="/login" replace />
+          )
+        } />
+
+
+
+      </Routes>
+
+      
+    </Router>
+  );
+}
+
+export default App;
\ No newline at end of file