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
