Czy autoryzacja aplikacji webowej powinna być zarówno na froncie i backendzie?

0

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.

1

No przede wszystkim na backendzie. Na froncie bez znaczenia.

2

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.

3

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ć

2

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.

1

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 😛

2

@gswidwa1: 401 jest błędem autentykacji nie autoryzacji.

Tutaj RFC:
https://www.rfc-editor.org/rfc/rfc2616#section-10.4.2

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/

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