我有一项服务,需要通过其他服务进行身份验证。
为此,我设置了一个中间件,它从我的初始请求中提取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)
]);
}
不知何故,卷曲中的用户对象最终成为我的责任。
知道为什么会这样吗?
答案 0 :(得分:2)
您没有在curl选项上返回转移,这会停止响应输出并返回字符串。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);