做前后端分离的项目,对于后端请求有浏览器的地址栏请求和ajax请求两种方式,
当用户打开两个或者两个以上的浏览器窗口时,若在其中一个窗口退出登录了,在另外一个窗口继续有ajax请求的话,在后端只做重定向到登录页面只会返回页面的html,并不会渲染到浏览器,导致无法重定向。
就像这样,当前几apply时重定向到登录页面但是不显示出来
因此需要在后台对未登录发过来的请求进行ajax验证:
以thinkphp为例:
public function _initialize()
{
$res = $this->checkLogin();
if($res['error'] == true){
if(request()->isAjax()){
echo '{"code":0,"message":"没有登录"}';die();
}
$login_url = '../../../front/login.html';
header('Location:'.$login_url);
}
}
如果是ajax请求,则返回一个状态值,前端通过判断状态值重新跳转,如果是浏览器请求,则使用浏览器重定向直接跳转到登录页面