38 lines
1022 B
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;
|
|
}
|
|
}
|
|
}
|