2012-07-06 84 views
12

我一直在琢磨了好一陣子我怎麼會去使用骨幹,因爲我一直在閱讀關於它的幾篇文章和很多人都在談論令牌和密鑰認證用戶。但我只想能夠登錄一個用戶並像通常一樣註冊一個用戶。Backbone.js的和用戶認證

我在想,在Web應用程序啓動時會有到路由請求「/我」,然後服務器,如果他(她)在登錄/給用戶返回相應的信息。

一樣,如果該路由回到{loggedIn: false}骨幹路由器會將用戶發送到登錄/註冊頁面。但是如果它回來了一個用戶配置文件信息,那麼這顯然意味着他有一個會話。

這是使用主幹時回去用戶身份驗證的方法好嗎?

+0

註冊,註冊及身份驗證使用Javascript?我會說不。使用Php,Erlang,Python,Asp.net使用後端框架來放置這些作品。用戶登錄後,設置一個cookie(我能想到的最佳解決方案)。 **每個**'xml http'請求都將擁有可幫助您驗證服務器端用戶的cookie。在服務器和身份驗證中需要做某些事情,授權就是其中之一。在 – Deeptechtons 2012-07-06 11:27:15

+1

用戶登錄這就是我說的,我的問題,但我想知道如果我的方法是處理在登錄或未經授權的用戶 – jamcoupe 2012-07-06 12:38:17

回答

31

簡短的回答:線高達$就向401(未授權)狀態代碼響應。

龍答:我們正在消耗從單頁網站一個RESTful API。當服務器檢測到未經授權的請求時,它只返回一個401.客戶端將重定向到/ login?#requested/resource。

/login會提示進行授權(重定向到我們的情況下,谷歌的誓言服務器),然後添加一個授權cookie,並重定向到最初請求#requested/resource

我們也發送每$阿賈克斯要求身份驗證的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(); 
     }); 
    }); 
+0

+1很好的解決方案的好方法後做JS的東西。奇蹟般有效。 – 2013-06-11 06:34:39