Co do tematu autoryzacji to będę tutkował, ale takie mam pytanie tylko czy w przypadku łączenia api z reactem to
role ogarnia się na frontcie i bakendzie? czy tylko na frontcie? Pytam, bo zauważyłem że rzadko kiedy są tutoriale
z autoryzacją razem. Przeważnie jest pokazane jak zrobić na froncie i backu. Nie no, wydaje mi się logiczne że musi być tu i tu,
jednak mimo wszystko to nie to samo co mvc, stąd wątek.
No przede wszystkim na backendzie. Na froncie bez znaczenia.
To jest tak, że backend decyduje, czy przyznać Tobie dostęp i dać żądane informacje, czy nie. Więc zbiję Cię z tropu: backend MUSI sprawdzać role użytkownika przy każdym wywołaniu API. Pewnie też zwraca jakieś kody błędów w razie nie przyznania dostępu. Frontend może, ale nie musi sprawdzać ról, bo i tak dostanie 401 z backendu w razie niepowodzenia.
Ale czasami się to robi też na froncie aby ukryć rzeczy (np menu czy inne podstrony) których user bez danej roli na froncie nie powinien widzieć
Zależy. Jak pracujesz u Janusza i sapie Ci nad uchem żeby szybciej i to jakiś wewnętrzny system to robisz na froncie i składasz wypowiedzenie.
A tak w rzeczywistości to backend jest ważniejszy, front może sobie ogarnać błędy obsługujac globalnie request i zwracać to co na backendzie. Dla lepszego interfejsu możesz obsługiwać wyświetlanie stron albo chowanie/pokazywanie przycisków w zależności od roli której ma user.
Na froncie to przetrzymywanie sesji (JWT lub Cookies) i wysyłanie requesta z odpowiednimi headerami, żeby serwer sprawdził czy wsio ok i czy jakaś przybłęda nie strzela po nasze cenne zasoby
@gswidwa1: 401 jest błędem autentykacji nie autoryzacji.
Tutaj RFC:
https://www.rfc-editor.org/rfc/rfc2616#section-10.4.2
Odnoszę wrażenie niezrozumienia zagadnienia autoryzacji u autora. Moja rada: wpisz sobie opie w google "<<nazwa_języka_w_którym_najepiej_sie_czujesz>> gist authorization example". O ile temat nie dotyczy jakiejś super niszowej technologii to wczytanie się w kod powinno przynieść olśnienie.
W skrócie, faktyczna autoryzacja przebiega na backendzie, po stronie frontu jak i back następuje ustawienie odpowiedniego cookie (poczytaj o local storage i session storage). Od Twojej decyzji zależy jak chcesz rozdzielić pozostałe kwestie takie jak obliczanie hasha z hasła - czy zaimplementować to na froncie czy backendzie.
EDIT
Ode mnie minimalistyczny przykład
https://auth0.com/blog/authentication-in-golang/