我正在Codeigniter 3中构建一个自定义认证系统。
给定这个代码:
class Base_REST extends REST_Controller
{
protected $user;
public function __construct($config = 'rest')
{
parent::__construct($config);
$this->load->helper('url');
$this->load->library('Oauth');
$this->user = $this->initUser();
}
/**
* @return mixed
*/
private function initUser()
{
try {
return $this->oauth->checkBearerToken($this->head('Authorization'));
} catch (Exception $exception) {
// ???
}
}
}
当一个异常被丢弃时,我不能像这样返回JSON:
{
"message": "The token is not valid"
}
我正在尝试这个,因为我从控制器返回JSON:
catch (Exception $exception) {
$this->response((object) [ 'message' => $exception->getMessage()], $exception->getCode());
}
但是在响应体中没有显示任何内容。
有人知道如何处理和返回这些错误吗?我已经看到了echo的使用,但我不认为这是最好的方式,如果在我的代码执行过程中有任何错误,响应体包括echo和错误。提前感谢!
代码是否在返回后直接退出,并且头内容是否设置为json ?
来自codeigniter文档的示例:
$response = array('status' => 'OK');
$this->output
->set_status_header(200)
->set_content_type('application/json', 'utf-8')
->set_output(json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))
->_display();
exit;