2016-07-11 4 views
5

Za pomocą routera Angular 2 chciałbym uchwycić zdarzenie, gdy trasa ma zostać aktywowana. W Angular 1.x użyłem $ locationChangeSuccess, a następnie zaznaczono, czy użytkownik był zalogowany, czy nie.Żądanie trasy interceptu za pomocą routera Angular 2

Potrzebuję zrobić coś podobnego z Angular 2, więc mogę przekierować użytkownika do ekranu logowania, jeśli nie są jeszcze uwierzytelnieni.

Odpowiedz

9

Zobacz CanActivate i CanDeactivate. official angular docs daje przykład tworzenia strażnika administratora, który okazał się bardzo przydatny podczas tworzenia ogólnego zabezpieczenia logowania.

CanActivate służy do sprawdzania, czy router może nawigować do nowej trasy, natomiast CanDeactivate służy do sprawdzania, czy router może nawigować z dala od bieżącej trasy. Jeśli strażnik jest obecny na trasie, będzie sprawdzał ze strażnikiem za każdym razem, gdy nastąpi nawigacja.

Here to link bezpośrednio do przykładu.

+0

Wygląda na to, że funkcja CanActivate jest przestarzała. Doktorzy nie radzą sobie dobrze z wydaniami, z mojego doświadczenia z ostatnich kilku miesięcy. https://www.reddit.com/r/Angular2/comments/4ipumf/canactivate_not_in_router_as_of_rc1/ – Beanwah

+2

Wrócił do nowego routera. Kiedyś był dekoratorem, a teraz jest to [interfejs] (https://angular.io/docs/ts/latest/api/router/index/CanActivate-interface.html). –

+1

Tak, masz rację – Beanwah