[ Article ]
Ibexa bez chaosu w kodzie: jak Kaliop Content Decorator Bundle porządkuje pracę z contentem

Stanisław Klimaszewski

Kaliop
Opublikowano 8 września 2018
Wiele aplikacji korzysta z mechanizmów uwierzytelniania, które wdrażamy na różne sposoby. System komponentów Vue.js oferuje ogromne możliwości, więc wykorzystajmy go do prostego obsłużenia procesu uwierzytelnienia.
Nie zawsze konieczne jest posiadanie skomplikowanego systemu uwierzytelniania – wiele aplikacji ma proste potrzeby!
Uwaga: przykłady kodu przedstawione w tym artykule wykorzystują vue-cli i vue-router. KOd jest dostępny tu : https://github.com/Erilan/auth-components-strategy-vuejs
Możemy ograniczać dostęp do stron za pomocą navigation guards w vue-router, jednak czasami potrzeby są naprawdę proste i do obsługi dostępu do stron wystarczą nam same komponenty.
Załóżmy, że mamy stronę, którą chcemy zabezpieczyć – na przykład panel administracyjny, profil użytkownika lub inne prywatne sekcje.
Ta strona jest bardzo prosta, ale może wykonywać zapytania do API w celu wyświetlenia prywatnych informacji.
Teraz skonfigurujmy vue-router, aby udostępnić tę stronę.
Jeśli przejdziesz na tę stronę http://localhost:8080/#/private-page, zobaczysz prywatną treść.

Mamy już sekcję z ograniczonym dostępem, więc czas przygotować formularz logowania. W naszym przykładzie posłużymy się bardzo prostym widokiem uwierzytelniania.
Metoda logowania jest naprawdę prosta: po prostu wysyła zdarzenie do komponentu nadrzędnego, ale w rzeczywistych przypadkach musimy wykonać wywołanie API, sprawdzić ciasteczko albo stan w Vuex… cokolwiek, co zadziała.
A oto na czym polega ta strategia:
Zamiast stosować navigation guards, przekierowania czy osobne komponenty dla każdego stanu użytkownika, po prostu sprawdzamy, czy jest on zalogowany.
Jeśli użytkownik jest zalogowany, wyświetlamy stronę odpowiadającą danej ścieżce, w przeciwnym razie pokazujemy komponent logowania.

W naszym przykładzie, gdy użytkownik się zaloguje, komponent App.vue otrzymuje informację o zmianie stanu i wyświetla router-view, zamiast formularza logowania.
System w tym przykładzie jest celowo uproszczony, ale zamiast polegać na lokalnej zmiennej isLoggedIn możemy w tym miejscu sprawdzać pliki cookie, zaglądać do magazynu vuex czy wykonywać zapytanie do API.
Treść wiadomości Gemini
Możemy również to udoskonalić, aby obsługiwać ścieżki, które nie mają ograniczeń dostępu, korzystając z... nested routes.
Możemy również wykorzystać przejścia (Vue transitions), aby zapewnić płynniejszą zmianę między formularzem logowania a stroną z ograniczonym dostępem.
Rozwiązanie to nie jest idealne, ponieważ nie obsłuży wszystkich możliwych przypadków, ale przy prostych wymaganiach sprawdza się doskonale!
Kod znajdziecie tu : https://github.com/Erilan/auth-components-strategy-vuejs
[ Article ]

Stanisław Klimaszewski