'backapi.yunzer.cn', 'sub' => $userInfo['id'], 'iat' => time(), 'exp' => time() + self::$expire, 'user' => $userInfo ]; return JWT::encode($payload, self::$secret, 'HS256'); } public static function verifyToken(string $token): ?array { try { $decoded = JWT::decode($token, new Key(self::$secret, 'HS256')); return (array)$decoded; } catch (\Exception $e) { return null; } } public static function getUserFromHeader(string $authHeader): array { if (!preg_match('/Bearer\s+(.+)/i', $authHeader, $matches)) { return ['id' => 0, 'account' => '', 'name' => '']; } $tokenData = self::verifyToken($matches[1]); if (!$tokenData || !isset($tokenData['user'])) { return ['id' => 0, 'account' => '', 'name' => '']; } return (array)$tokenData['user']; } public static function getSecret(): string { return self::$secret; } public static function setSecret(string $secret): void { self::$secret = $secret; } }