2012-07-06 15 views
12

バックボーンを使用してユーザーを認証する方法についてはかなりの間、私はいくつかの記事を読んでおり、多くはトークンとキーについて話しています。私はちょうどあなたと同じようにユーザーにサインインしてユーザーを登録できるようにしたいと思います。Backbone.jsとユーザー認証

私は「私は/」ウェブアプリにルートへの要求があるだろうに起動することを考えていたし、彼/彼女がログインしている場合、サーバーは、ユーザーに戻って適切な情報を提供します。

場合と同様にルートは{loggedIn: false}で戻ってきました。バックボーンルータはユーザをログイン/登録ページだけに送ります。しかし、それがユーザープロファイル情報で戻ってきたのであれば、明らかに彼がセッションを持っていたことになります。

これは、バックボーンを使用しているときにユーザー認証に戻っても問題ありませんか?

+0

Javascriptを使用して登録、認証、認証しますか?私はいいえと言うだろう。 Php、Erlang、Python、Asp.netを使ってバックエンドフレームワークを使ってこれらの部分を入れてください。ユーザーログが入ったら、クッキーを設定してください(私が考えることができる最高のソリューション)。 **各 '' xml http 'リクエストには、サーバー側のユーザーを検証するのに役立つクッキーが含まれます。あなたがサーバ上でやるべきことがあり、Authentication、Authorizationがその一つです。ユーザーがログインした後にJsの処理を行う – Deeptechtons

+1

私の質問ではこれが言いますが、私の方法がログインした、または許可されていないユーザーに対処する良い方法であるかどうか疑問です。 – jamcoupe

答えて

31

短い回答:401(許可されていない)ステータスコードに応答するために$ .ajaxをアップしてください。

長い回答:1ページのウェブサイトからRESTful APIを使用しています。サーバーが不正な要求を検出すると、401を返します。クライアントは/ login?#requested/resourceにリダイレクトされます。

/loginは、認可クッキーを追加し、もともと我々はまた、すべての$アヤックスの要求に認証クッキーを送っている#requested/resource

を要求にリダイレクト(私たちの場合は、Googleの誓いサーバーにリダイレクト)の承認を求めるメッセージが表示されます。

うまくいけば、これは役に立ちます。

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素晴らしい解決策です。魅力のように働く。 –