2012-07-06 16 views
12

Mi sono chiesto per un po 'come procedere per l'autenticazione degli utenti utilizzando Backbone perché ho letto alcuni articoli su di esso e molti di essi parlano di token e chiavi .. Ma Voglio solo essere in grado di accedere a un utente e registrare un utente come faresti normalmente.Backbone.js e autenticazione utente

Stavo pensando che sul web app start up ci sarebbe stata una richiesta al percorso '/ me' e allora il server dà l'utente torna informazioni appropriate se lui/lei è connesso.

Come se il percorso è tornato con {loggedIn: false} il router backbone avrebbe inviato l'utente solo alle pagine di accesso/registro. Ma se tornasse con le informazioni del profilo di un utente allora significherebbe ovviamente che ha avuto una sessione.

È un modo corretto di tornare all'autenticazione utente quando si utilizza Backbone?

+0

Registrazione, registrazione e autenticazione tramite Javascript? Direi di no Metti questi pezzi usando il framework backend usando Php, Erlang, Python, Asp.net. Dopo aver effettuato l'accesso, imposta un cookie (la migliore soluzione a cui riesco a pensare). ** Ciascuna richiesta ** 'xml http' possiede il cookie che consente di convalidare l'utente sul lato server. Ci sono alcune cose che devi fare sul server e l'autenticazione, l'autorizzazione è una di queste. Fai la roba Js dopo che l'utente effettua il login – Deeptechtons

+1

Questo è quello che sto dicendo nella mia domanda, ma mi chiedo se il mio metodo sia un buon modo per gestire una grande soluzione di login o utente non autorizzato – jamcoupe

risposta

31

Risposta breve: collegare $ .ajax per rispondere ai codici di stato 401 (Non autorizzato).

Risposta lunga: stiamo consumando una API RESTful da un sito Web a pagina singola. quando il server rileva una richiesta non autorizzata, restituisce solo un 401. Il client reindirizza a/login? # richiesto/risorsa.

/login chiederà l'autorizzazione (redirect al server giuramento di Google nel nostro caso) quindi aggiungere un cookie di autorizzazione e reindirizzare al originariamente richiesto #requested/resource

stiamo anche inviare il cookie di autenticazione su ogni richiesta $ .ajax.

Speriamo che questo sia utile.

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. funziona come un fascino. –