简短的回答:连接 $.ajax 以响应 401(未授权)状态代码。
长答案:我们正在使用来自单页网站的 RESTful api。当服务器检测到未经授权的请求时,它只返回 401。客户端将重定向到 /login?#requested/resource。
/login
将提示授权(在我们的例子中重定向到谷歌的 oath 服务器)然后添加一个授权 cookie 并重定向到最初请求的#requested/resource
我们还在每个 $.ajax 请求上发送 auth cookie。
希望这会有所帮助。
define(
[
'jquery',
'jquery.cookie'
],
function ($) {
var redirectToLogin = function () {
var locationhref = "/login";
if (location.hash && location.hash.length > 0) {
locationhref += "?hash=" + location.hash.substring(1);
}
location.href = locationhref;
};
var $doc = $(document);
$doc.ajaxSend(function (event, xhr) {
var authToken = $.cookie('access_token');
if (authToken) {
xhr.setRequestHeader("Authorization", "Bearer " + authToken);
}
});
$doc.ajaxError(function (event, xhr) {
if (xhr.status == 401)
redirectToLogin();
});
});