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
8
A
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ę.
Co się stanie, jeśli strona logowania nie jest stroną obsługiwaną przez kątową – JustGoscha
@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). –