jwtService = $jwtService; } /** * Handle an incoming request. * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next): Response { $authHeader = $request->header('Authorization'); if (!$authHeader) { return response()->json([ 'code' => 401, 'message' => 'Authorization header is required' ], 401); } $token = str_replace('Bearer ', '', $authHeader); if (!$token) { return response()->json([ 'code' => 401, 'message' => 'Token is required' ], 401); } try { // 直接调用JwtService的verifyToken方法 $user = $this->jwtService->verifyToken($token); // 将用户信息存入请求属性 $request->attributes->set('payload', $user); return $next($request); } catch (ExpiredException $e) { return response()->json([ 'code' => 401, 'message' => 'Token已过期' ], 401)->setEncodingOptions(JSON_UNESCAPED_UNICODE); } catch (SignatureInvalidException $e) { return response()->json([ 'code' => 400, 'message' => 'Token签名无效' ], 400)->setEncodingOptions(JSON_UNESCAPED_UNICODE); } catch (InvalidArgumentException $e) { return response()->json([ 'code' => 400, 'message' => 'Token格式错误' ], 400)->setEncodingOptions(JSON_UNESCAPED_UNICODE); } catch (\Exception $e) { return response()->json([ 'code' => 400, 'message' => 'Invalid token', 'error' => $e->getMessage() ], 400)->setEncodingOptions(JSON_UNESCAPED_UNICODE); } } }