Когда я делаю запрос от ajax в ответ, мне нужно отправить статус 401 (не авторизован), когда пользователь не вошел в систему.
Я использую концепции ООП с MVC Framework.
Итак, моя конструктивная функция следующая
function __construct() {
parent::__construct();
$request = apache_request_headers();
if(isset($request['X-Requested-With']) && $request['X-Requested-With'] == 'XMLHttpRequest')
{
$this->user = General::getUser(false);
}
else
{
$this->user = General::getUser();
}
}
General::getUser();
определяется в моем другом классе, который проверяет сессию и возвращает информацию о пользователе.
Теперь, когда я делаю ajax-запрос, и пользователь не вошел в систему, я хочу отправить http статус 401. Но как я могу, как я не могу использовать return в конструкции.
Так что за следующей процедурой мне нужно следовать, чтобы сделать это. Я хочу вернуть его из __construct
потому что я не хочу, чтобы я проверял $this->user
в моей вызывающей функции, а затем повторить некоторый результат.
Пожалуйста, предложите и скажите, если я делаю что-то не так.
class HomeController {
function __construct() {
parent::__construct();
$request = apache_request_headers();
if(isset($request['X-Requested-With']) && $request['X-Requested-With'] == 'XMLHttpRequest')
{
$this->user = General::getUser(false);
}
else
{
$this->user = General::getUser();
}
Authentication::authorize($this->user);
}
}
class Authentication {
public static function authorize($user) {
if(! $user->isLoggedIn()) {
Request::unauthorized();
}
return true;
}
}
class Request {
public static function unauthorized() {
header("HTTP/1.1 401 Unauthorized");
die();
}
}
Вы также можете визуализировать некоторое представление внутри Request :: unauthorized () или перенаправить перфом на страницу аутентификации.
Это будет проще всего сделать
header("HTTP/1.1 401 Unauthorized");
exit;