Backbone.js和用户身份验证

时间:2012-07-06 09:28:17

标签: authentication backbone.js

我一直想知道我将如何使用Backbone对用户进行身份验证,因为我一直在阅读一些关于它的文章,其中很多都在讨论令牌和密钥..但我只是想能够登录用户并像平常一样注册用户。

我想在网络应用程序启动时会有对'/ me'的请求,然后服务器会在用户登录时向用户提供适当的信息。

如果路由返回{loggedIn: false},则骨干路由器会将用户仅发送到登录/注册页面。但如果它返回用户个人资料信息,那么显然意味着他有一个会话。

这是使用Backbone时返回用户身份验证的好方法吗?

1 个答案:

答案 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();
        });
    });