2012-08-22 11 views
8

W AngularJS, mam kontroler logowania, który jest przekierowywany przez każdą stronę w aplikacji, jeśli użytkownik dotrze na stronę i nie jest zalogowany. Po sekwencji logowania, chciałbym przekierować użytkownika powrót do strony, z której pochodzą. Jaki jest najlepszy sposób na zrobienie tego? Zapisać starą lokalizację w numerze $rootScope? Przekieruj na numer '/login?returnto=' + $location.path()? Czy jest wbudowana funkcja?Przekierowanie do referer

Odpowiedz

5

Można użyć $rootScope lub zdefiniować usługę, aby zapisać starą lokalizację. Oto SO post, który kontrastuje dwa podejścia. Osobiście nie lubię dodawać returnto= do adresu URL.

Ten wpis na blogu, Authentication in AngularJS, może Cię zainteresować. Zwróć uwagę na komentarz, który napisał Vojta (jeden z autorów AngularJS) na tym blogu na temat używania $rootScope - zamiast tego zaleca usługę.

+1

Co się stanie, jeśli strona logowania nie jest stroną obsługiwaną przez kątową – JustGoscha

+1

@JustGoscha, użyj pliku cookie lub obiektu sesji po stronie serwera do przechowywania oryginalnej strony. Po udanym logowaniu sprawdź, czy ciasteczko istnieje lub wyodrębnij stronę z sesji i wyślij ją do przeglądarki (np. Jako część JavaScript lub ukryty element formularza). –