中间件中的Laravel卷曲被添加到响应中


Laravel curl in middleware gets added to response

我有一个服务,需要通过另一个服务进行身份验证。

为此,我设置了一个中间件,它从我的初始请求中提取Authorization标头,然后创建一个带有标头集的curl请求到Auth Service。

public function handle($request, Closure $next) {
    $authHeader = $request->header('Authorization');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://api.user.eventmanager.app/getAccess");
    curl_setopt($ch,CURLOPT_HTTPHEADER,array(
        'Authorization: ' . $authHeader,
        'Origin: http://api.asdf.rerere.app'
    ));
    $result = curl_exec($ch);
    if($result) {
        curl_close($ch);
        return $next($request);
    } else {
        curl_close($ch);
        return response("Invalid Token or expired Token", 401);
    }
}

请求按预期返回请求的资源,但也在响应中添加了User对象(我通过curl请求得到的对象,我想在中间件中对用户对象进行进一步检查,但我不希望它返回到初始请求)。

以下是我想要的响应的控制器:

public function show($id)
{
    $event = Event::with('timeTableEntries', 'venue', 'bands')->find($id);
    if(!$event) {
        return $this->respondNotFound('Event does not exist!');
    }
    return $this->respond([
        'data' => $this->eventTransformer->transform($event)
    ]);
}

不知怎的,卷曲中的用户对象最终出现在了我的响应中。

知道为什么会发生这种事吗?

您没有在curl选项上返回transfer,这会阻止响应输出并返回字符串。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

根据http://php.net/manual/en/function.curl-setopt.php