Files
AI-Chat/app/Middleware/AuthMiddleware.php

38 lines
1022 B
PHP

<?php
namespace App\Middleware;
use App\Config\AppConfig;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
class AuthMiddleware
{
public static function handle(): void
{
$authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
if (!$authHeader || !preg_match('/Bearer\s+(.*)$/i', $authHeader, $matches)) {
http_response_code(401);
echo json_encode(['success' => false, 'message' => '请先登录']);
exit;
}
$token = $matches[1];
try {
$jwtSecret = AppConfig::get('jwtSecret');
$decoded = JWT::decode($token, new Key($jwtSecret, 'HS256'));
$GLOBALS['auth_user'] = [
'userId' => $decoded->userId,
'username' => $decoded->username,
'role' => $decoded->role
];
} catch (\Exception $e) {
http_response_code(401);
echo json_encode(['success' => false, 'message' => '请先登录']);
exit;
}
}
}