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?
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();
});
});
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