当我在响应中从ajax发出请求时,我需要在用户未登录时发送401(未授权)状态。
我正在使用OOP Concepts和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
然后回显一些结果。
请建议并告诉我是否做错了。
答案 0 :(得分:1)
最容易做到
header("HTTP/1.1 401 Unauthorized");
exit;
答案 1 :(得分:1)
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()或perfom重定向到身份验证页面中呈现一些视图。