React ochrona panelu admina.

0

Cześć tworzę mały serwis z backendem w Springu oraz frontem w reactcie. Po zalogowaniu użytkownik otrzymuje token JWT który trzymam w localstorage, moje pytanie brzmi w jaki sposób powinienem chronić panel admina do którego dostęp powinien mieć tylko użytkownik z rolą admina przed zwykłymi użytkownikami. Póki co wraz z odpowiedzią na logowanie odsyłam także booleana isAdmin i to na jego podstawie udzielam dostępu do panelu admina, jednak wydaje mi się iż nie jest to najbardziej optymalne rozwiązanie.

2

Serwer powinien zwrócić takiemu użytkownikowi (nie adminowi) pustą odpowiedź ze statusem 403 Forbidden.

Po stronie frontu możesz sobie sprawdzić jaki status ma odpowiedź i odpowiednio zareagować.

W taki sposób musisz zabezpieczyć nie tylko logowanie, ale i wszystkie możliwe endpointy (adresy). związane z panelem admina.

A po stronie frontu nie można przechowywać żadnych "adminowskich" danych. Tylko sam UI.

0

Bardziej chodziło mi o samo podejście, załóżmy że mam navbar z którego to mogę wejść do panelu admina. Jeżeli dobrze rozumiem powinienem za każdym razem kiedy wyświetlam navbar, wysyłać request do api i w zależności od tego jaka jest odpowiedź wyświetlić w navbarze link do panelu admina bądź nie.

0

A nie możesz zwrócić jakoś w JWT listy ról / uprawnień i bazując na JWT renderować odpowiednio przyciski z nawigacją do panelu admina i ładować odpowiednio Routy (nie pamiętam jak się to nazywało w React'cie?

0

@Aisekai: Właśnie tak robie jednak wydaje mi się iż nie jest to dobre podejście.

3

Pamiętaj, że po stronie przeglądarki użytkownik może sobie zmanipulować wszystko i dowolnie przerobić. Więc sprawdzanie czegokolwiek po stronie użytkowika nie ma sensu.

Front wysyła zapytanie o zawartość kontenera, a backend sprawdza czy jesteś zalogowany i jakie prawa ma aktualny użytkownik i w oparciu o to generuje przesyłaną treść.

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