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

时间:2016-04-18 15:02:07

标签: php laravel curl middleware

我有一项服务,需要通过其他服务进行身份验证。

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

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);
    }

}

请求按预期返回请求的ressource,但也在响应中添加了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)
    ]);
}

不知何故,卷曲中的用户对象最终成为我的责任。

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

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

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

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