0, 'message' => $message, 'data' => $data, ]); } /** * 错误响应 */ protected function error(string $message = 'error', int $code = 1, $data = null): Response { return json([ 'code' => $code, 'message' => $message, 'data' => $data, ]); } /** * 获取当前用户ID */ protected function getUserId(Request $request): ?int { // 先检查 request 中是否已注入 if (isset($request->userId)) { return $request->userId; } // 从 Authorization header 获取 token $token = $request->header('Authorization'); if ($token) { $token = str_replace('Bearer ', '', $token); } if (!$token) { return null; } // 解析 token $payload = \app\Util\JwtUtil::decode($token); if (!$payload) { return null; } return (int) ($payload['user_id'] ?? null); } /** * 验证认证并返回用户ID,失败则抛出异常 */ protected function requireAuth(Request $request): int { $userId = $this->getUserId($request); if (!$userId) { throw new \Exception('未登录或登录已过期', 401); } return $userId; } }