【问题标题】:Backbone.js and user authenticationBackbone.js 和用户认证
【发布时间】:2012-07-06 09:28:16
【问题描述】:

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

我在想,在网络应用程序启动时,会有一个对路由“/me”的请求,然后如果用户登录,服务器会向用户返回适当的信息。

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

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

【问题讨论】:

  • 使用 Javascript 注册、注册和验证?我会说不。使用 Php、Erlang、Python、Asp.net 使用后端框架放置这些片段。用户登录后,设置一个cookie(我能想到的最佳解决方案)。 每个 xml http 请求将拥有可帮助您在服务器端验证用户的cookie。您必须在服务器和身份验证上做一些事情,授权就是其中之一。用户登录后做Js的事情
  • 这就是我在我的问题中所说的,但我想知道我的方法是否是处理登录或未经授权用户的好方法

标签: authentication backbone.js


【解决方案1】:

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

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

/login 将提示授权(在我们的例子中重定向到 google 的 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();
        });
    });

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 2014-12-14
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2013-01-18
    • 1970-01-01
    相关资源
    最近更新 更多