我一直想知道我将如何使用Backbone对用户进行身份验证,因为我一直在阅读一些关于它的文章,其中很多都在讨论令牌和密钥..但我只是想能够登录用户并像平常一样注册用户。
我想在网络应用程序启动时会有对'/ me'的请求,然后服务器会在用户登录时向用户提供适当的信息。
如果路由返回{loggedIn: false}
,则骨干路由器会将用户仅发送到登录/注册页面。但如果它返回用户个人资料信息,那么显然意味着他有一个会话。
这是使用Backbone时返回用户身份验证的好方法吗?
答案 0 :(得分:32)
简短回答:连接$ .ajax以响应401(未授权)状态代码。
答案很长:我们正在使用单页网站上的RESTful api。当服务器检测到未经授权的请求时,它只返回401.客户端将重定向到/ login?#requested / resource。
/login
将提示授权(在我们的情况下重定向到Google的誓言服务器),然后添加授权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();
});
});