Kręgosłup.JS i uwierzytelnianie użytkowników

Zastanawiałem się od dłuższego czasu, jak mógłbym przejść do uwierzytelniania użytkowników za pomocą szkieletu, ponieważ czytałem kilka artykułów na ten temat i wiele z nich mówi o tokenach i kluczach.. Ale chcę tylko móc zalogować się do użytkownika i zarejestrować użytkownika, jak zwykle.

Myślałem, że przy uruchomieniu aplikacji webowej pojawi się prośba o trasę "/ me", a następnie serwer oddaje użytkownikowi odpowiednie informacje, jeśli jest zalogowany do środka.

Jak gdyby trasa wróciła z {loggedIn: false} Router szkieletowy wysyłałby użytkownika tylko do stron logowania/rejestracji. Ale jeśli wróci z informacjami o profilu użytkownika, to oczywiście oznaczałoby to, że miał sesję.

Czy Jest to dobry sposób powrotu uwierzytelniania użytkownika podczas korzystania z szkieletu?

Author: jamcoupe, 2012-07-06

1 answers

Krótka odpowiedź: podłącz $.ajax reaguje na KODY STANU 401 (nieautoryzowane).

Długa odpowiedź: zużywamy RESTful api z pojedynczej strony internetowej. gdy serwer wykryje nieautoryzowane żądanie, po prostu zwraca 401. Klient przekieruje do / login?# requested / resource.

/login spowoduje wyświetlenie monitu o autoryzację (przekierowanie na serwer oath google w naszym przypadku), a następnie dodanie pliku cookie autoryzacji i przekierowanie do pierwotnie żądanego pliku #requested/resource

Jesteśmy również wysyłanie pliku cookie auth na każdy $.żądanie ajax.

Mam nadzieję, że to pomoże.
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();
        });
    });
 31
Author: timDunham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-06 20:33:15