내 페이지 (CakePHP 2.4)에서 사용자가 로그인하지 않은 상태에서 Ajax 요청이있을 때 기능을 추가 한 다음 401 Unauthorized HTTP 오류를 발생시켜 Ajax가 catch 할 수있게했습니다. 그것이 로그인으로 리디렉션해야한다는 것을 알고 있습니다. 그러나 문제는 ErrorHandler를가 그것을 잡을하지 않는다는 것입니다, 그리고 Uncaught exception
으로 그것을 보여줍니다CakePHP : ErrorHandler가 작동을 멈췄습니다.
PHP Fatal error: Uncaught exception 'UnauthorizedException' with message 'Su sesión ha terminado. Por favor ingrese nuevamente' in D:\wamp\www\app\Controller\AppController.php:121
사실은 내가 내 자신의 핸들러를 구현하는 일부 값을 수정,하지만 난 내 마음을 변경하고 난 다시 복귀한다는 것입니다 기본값으로, 그래서 아마도 나는 뭔가를 놓쳤습니다. 그리고 지금은 어떤 종류의 오류도 잡히지 않습니다. 404와 심지어는 ajax와 일반적인 http 요청도 있습니다. core.php에서 Config
public function beforeFilter()
{
if($this->Session->check('login.language'))
{
Configure::write('Config.language', $this->Session->read('login.language'));
}
else
{
Configure::write('Config.language', "spa");
}
parent::beforeFilter();
//Here is the login check part
if(!$this->Auth->user('id') && $this->request->is('ajax') && !(in_array($this->request->params['action'], array('login', 'cambiar_idioma'))))
{
throw new UnauthorizedException(__("Su sesión ha terminado. Por favor ingrese nuevamente"));
}
}
핸들러 :
Configure::write('Error', array(
'handler' => 'ErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
'trace' => true
));
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'ExceptionRenderer',
'log' => true
));
Configure::write('debug', 2);
그래서, 어떤 아이디어가 왜 예외를 잡기되지
여기 내 AppController::beforeFilter
코드입니까?