Kun*_*Lun 5 php codeigniter codeigniter-4
我有一个使用 CodeIgniter 4 的项目。
我有一个before过滤器:
public function before(RequestInterface $request){
$auth = $request->getHeader("Authorization");
if($auth == null){
$response = Services::response();
$response->setStatusCode(401);
$response->setHeader("WWW-Authenticate", "Bearer Token");
$response->setBody("{\"error\": \"unauthorized\"}");
exit;
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有授权,我想停止请求并返回$response给客户端。
现在请求已停止,因为exit.
但作为答案我得到了200 OK并且没有body content。
我如何发出exit请求并将其设置$response给客户端?
正如评论中提到的,在 Filter 的 before 方法中返回 Response 对象会阻止控制器的执行。您不需要使用die或exit。
public function before(RequestInterface $request){
$auth = $request->getHeader("Authorization");
if($auth == null){
$response = Services::response();
$response->setStatusCode(401);
$response->setHeader("WWW-Authenticate", "Bearer Token");
$response->setBody("{\"error\": \"unauthorized\"}");
return $response;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,不返回任何内容return;不会阻止控制器运行。