用户未登录时如何设置401状态?
How to set 401 status when user is not logged in?
当我从 ajax 发出请求作为响应时,我需要在用户未登录时发送 401(未授权)状态。
我在 MVC 框架中使用 OOP 概念。
所以我的构造函数如下
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();
在我的另一个 class 中定义,它检查会话和 return 登录用户信息。
现在,当我发出 ajax 请求并且用户未登录时,我想发送 HTTP 状态 401。但是我不能在构造中使用 return。
那么接下来我需要遵循什么程序才能做到这一点。我想从 __construct
return 它因为我不希望我在我的调用函数中检查 $this->user
然后回显一些结果。
如果我做错了什么,请提出建议并指出。
最容易做到
header("HTTP/1.1 401 Unauthorized");
exit;
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() 中呈现一些视图或执行重定向到身份验证页面。
当我从 ajax 发出请求作为响应时,我需要在用户未登录时发送 401(未授权)状态。
我在 MVC 框架中使用 OOP 概念。 所以我的构造函数如下
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();
在我的另一个 class 中定义,它检查会话和 return 登录用户信息。
现在,当我发出 ajax 请求并且用户未登录时,我想发送 HTTP 状态 401。但是我不能在构造中使用 return。
那么接下来我需要遵循什么程序才能做到这一点。我想从 __construct
return 它因为我不希望我在我的调用函数中检查 $this->user
然后回显一些结果。
如果我做错了什么,请提出建议并指出。
最容易做到
header("HTTP/1.1 401 Unauthorized");
exit;
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() 中呈现一些视图或执行重定向到身份验证页面。