退出修复

This commit is contained in:
2026-04-13 20:25:24 +08:00
parent 0fa95e661b
commit 77b348eb48
4 changed files with 85 additions and 3 deletions

View File

@@ -14,7 +14,7 @@ from utils.database import execute_one, execute_query, execute_insert, execute_u
class AdminRoleModel: class AdminRoleModel:
"""管理员角色数据模型无班级ID""" """管理员角色数据模型"""
@staticmethod @staticmethod
async def get_by_user_id(user_id: int) -> Optional[Dict[str, Any]]: async def get_by_user_id(user_id: int) -> Optional[Dict[str, Any]]:

View File

@@ -0,0 +1,63 @@
<?php
/**
* 班级操行分管理系统 - Session 退出清除接口
*
* 开发者: Canglan
* 联系方式: admin@sea-studio.top
* 版权归属: Sea Network Technology Studio
* 许可证: MIT License
*
* 版权所有 © Sea Network Technology Studio
*
* 说明:退出登录时,清除 PHP Session
*/
// 引入配置文件以初始化 Session
require_once __DIR__ . '/../config.php';
// 设置响应头
header('Content-Type: application/json; charset=utf-8');
// 允许跨域
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
// 处理预检请求
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
// 只允许 POST 请求
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode([
'success' => 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();

View File

@@ -98,7 +98,7 @@ $_SESSION['user_id'] = $data['user_id'];
$_SESSION['user_type'] = $data['user_type']; $_SESSION['user_type'] = $data['user_type'];
$_SESSION['username'] = $data['username']; $_SESSION['username'] = $data['username'];
$_SESSION['real_name'] = $data['real_name'] ?? ''; $_SESSION['real_name'] = $data['real_name'] ?? '';
$_SESSION['role'] = $data['role'] ?? ''; // 添加 role 字段 $_SESSION['role'] = $data['role'] ?? '';
$_SESSION['login_time'] = time(); $_SESSION['login_time'] = time();
// 如果是学生,额外设置 student_id与 user_id 相同) // 如果是学生,额外设置 student_id与 user_id 相同)

View File

@@ -145,8 +145,27 @@ function getStatusBadge(status, type = 'homework') {
} }
async function logout() { async function 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'); await apiPost('/api/auth/logout');
} catch (e) {
console.warn('后端登出失败', e);
}
// 清除 localStorage
clearAuth(); clearAuth();
// 跳转回登录页
window.location.href = '/index.php'; window.location.href = '/index.php';
} }