Backbone.js和用户身份验证

jam*_*upe 12 authentication backbone.js

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

我想在网络应用程序启动时会有一个请求路由'/我'然后服务器给用户返回适当的信息,如果他/她已登录.

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

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

tim*_*ham 32

简短回答:连接$ .ajax以响应401(未授权)状态代码.

答案很长:我们在单页网站上使用RESTful api.当服务器检测到未经授权的请求时,它只返回401.客户端将重定向到/ login?#requested/resource.

/login 将提示授权(在我们的情况下重定向到谷歌的誓言服务器)然后添加授权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();
        });
    });
Run Code Online (Sandbox Code Playgroud)