Szukam sposobu na zrobienie tych dwóch rzeczy, najpierw chcę przekierować użytkownika na stronę logowania, jeśli nie znaleziono identyfikatora SessionID, a drugi chciałbym usłyszeć opinia o utrzymywaniu ID sesji tylko w pamięci (bez plików cookie).AngularJS - Przekieruj do strony logowania i Persistence of Session ID
Rozwiązanie wpadłem na przekierowanie jest:
1 - Tworzenie usługa nazywa OAuth, że sprawdzi, czy SessionID istnieje, a jeśli nie, przekierowuje do strony logowania, usługa jest również odpowiedzialny za login i metody wylogowania.
app.factory('OAuth', ['$http', function ($http) {
var _SessionID = '';
return {
login: function() {
//Do login ans store sessionID in var _SessionID
},
logout: function() {
//Do logout
},
isLoggedIn: function() {
if(_SessionID) {
return true;
}
//redirect to login page if false
}
};
}]);
2 - wstrzyknąć nową usługę OAuth w każdym kontrolerze i sprawdzić, czy użytkownik isLoggedIn
app.controller('myCtrl', ['$scope', 'OAuth', function ($scope, OAuth) {
//check if user is logged
OAuth.isLoggedIn();
}]);
Pytania:
1 - Metoda isLoggedIn() zostanie wywołana w wszystkich kontrolerów, tak Zastanawiam się, czy istnieje sposób, aby to zrobić bez wstrzykiwania usługi i wywoływania jej w każdym kontrolerze.
2 - Zamiast posiadania pliku cookie do przechowywania identyfikatora sesji, chcę zapisać go w zmiennej _SessionID OAuth i dla każdego żądania wysłać ją do serwera. Czy jest to podejście opłacalne/bezpieczne? Czy możesz mi podać jakieś pomysły?
Dzięki!
Nicei. Dzięki za cynk Dan! – Bema
Bardzo pomocne jest również [napis o podejściu] (http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application). –