React.js obsługa tokenu jwt do autoryzacji komponentów.

0

Cześć natrafiłem na problem przy tworzeniu aplikacji. Stworzyłem komponenty do których dostęp mają tylko użytkownicy z odpowiednimi uprawnieniami. Póki co role usera przechowuje na sztywno w pamięci i wszystko działa tak jak należy. Moje pytanie brzmi w jaki sposób posiadając sam token w którym payload zawiera odpowiednie role użytkownika moge je wydobyć po stronie klienta. Myślałem nad dodatkowym requestem z komponentu navbaru przy każdym jego re-renderze jednek wtedy role użytkownika w payloadzie byłyby zbędne.

0

Jeśli masz token to wyciągaj role z tokena po stronie klienta (zakładam że token jest wzbogacony o claimy z rolami). Jest do tego masa różnych bibliotek, tutaj pierwsze co mi wyskoczyło po wygooglowaniu: https://www.npmjs.com/package/jwt-decode Nie ma potrzeby wysyłać dodatkowe requesty do serwera skoro możesz to wszystko zrobić bezpośrednio w aplikacji.

0

@aje123:

Zastanawiałem się czy jest to optymalne pod względem bezpieczeństwa

Kod klienta nigdy nie jest w pełni bezpieczny bo każdy może go podejrzeć i zmodyfikować. Dla tego to serwer zawsze musi odpowiadać za autoryzację requestow. Przykładowy scenariusz: tylko użytkownik z rolą admin może mieć wgląd do listy zarejestrowanych użytkowników. W pierwszej kolejności zabezpieczasz endpoint zwracający użytkowników- jeśli użytkownik nie jest adminem to zwracasz 401. Natomiast po stronie klienta chcesz aby to dobrze wyglądało, co za tym idzie sprawdzasz czy użytkownik jest adminem (poprzez czytanie tokena) i jeśli nie to blokujesz stronę/komponent z użytkownikami. Z perspektywy użytkownika aplikacji wszystko działa jak należy, z perspektywy hackera jeśli nawet coś zmieni w kodzie i uda mu się wyświetlić stronę z użytkownikami to nic to nie da, bo serwer nie zwróci użytkowników.

1 użytkowników online, w tym zalogowanych: 0, gości: 1