diff --git a/backend/models/admin_role.py b/backend/models/admin_role.py index 723ac3a..13a09b6 100644 --- a/backend/models/admin_role.py +++ b/backend/models/admin_role.py @@ -14,7 +14,7 @@ from utils.database import execute_one, execute_query, execute_insert, execute_u class AdminRoleModel: - """管理员角色数据模型(无班级ID)""" + """管理员角色数据模型""" @staticmethod async def get_by_user_id(user_id: int) -> Optional[Dict[str, Any]]: diff --git a/frontend/api/clear_session.php b/frontend/api/clear_session.php new file mode 100644 index 0000000..48a2bea --- /dev/null +++ b/frontend/api/clear_session.php @@ -0,0 +1,63 @@ + false, + 'message' => '仅支持 POST 请求' + ]); + exit(); +} + +// 清除 Session +$_SESSION = array(); + +// 如果使用了 cookie,删除 cookie +if (ini_get("session.use_cookies")) { + $params = session_get_cookie_params(); + setcookie(session_name(), '', time() - 42000, + $params["path"], $params["domain"], + $params["secure"], $params["httponly"] + ); +} + +// 销毁 Session +session_destroy(); + +// 返回成功响应 +http_response_code(200); +echo json_encode([ + 'success' => true, + 'message' => 'Session 已清除' +]); +exit(); \ No newline at end of file diff --git a/frontend/api/save_session.php b/frontend/api/save_session.php index f6a704e..49fcfe3 100644 --- a/frontend/api/save_session.php +++ b/frontend/api/save_session.php @@ -98,7 +98,7 @@ $_SESSION['user_id'] = $data['user_id']; $_SESSION['user_type'] = $data['user_type']; $_SESSION['username'] = $data['username']; $_SESSION['real_name'] = $data['real_name'] ?? ''; -$_SESSION['role'] = $data['role'] ?? ''; // 添加 role 字段 +$_SESSION['role'] = $data['role'] ?? ''; $_SESSION['login_time'] = time(); // 如果是学生,额外设置 student_id(与 user_id 相同) diff --git a/frontend/assets/js/common.js b/frontend/assets/js/common.js index fb4f284..8483add 100644 --- a/frontend/assets/js/common.js +++ b/frontend/assets/js/common.js @@ -145,8 +145,27 @@ function getStatusBadge(status, type = 'homework') { } async function logout() { - await apiPost('/api/auth/logout'); + // 清除 PHP Session + try { + await fetch('/api/clear_session.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' } + }); + } catch (e) { + console.warn('清除Session失败', e); + } + + // 清除后端 Token + try { + await apiPost('/api/auth/logout'); + } catch (e) { + console.warn('后端登出失败', e); + } + + // 清除 localStorage clearAuth(); + + // 跳转回登录页 window.location.href = '/index.php'; }