Problem z uprawnieniami użytkowników

Po zalogowaniu danego gracza mamy możliwość podejrzenia informacji o nim. Jeśli to są nasze informacje, możemy je edytować. Jeśli informacje należą do innego gracza, możemy je tylko podglądać (do tego tylko wybrane informacje). Natknęłam się więc na problem, jak przekazywać informację dotyczącą tego, czy właściciel danego obiektu (np. obiekt gracza zawierający takie informacje jak imię, nazwisko, wiek, miasto) jest aktualnie zalogowanym graczem.

Pomyślałam chwilę i moje 3 propozycje to:

1 trzymanie informacji po stronie klienta (front-endu)

2 wysyłanie osobnego zapytania do serwera

3 zwracanie dodatkowych informacji wraz z odpowiedzią z serwera

Wersja pierwsza, czyli trzymanie informacji w Angularze mogłaby zapewne zostać rozwiązana jakąś globalną zmienną, w której przechowywałabym identyfikator gracza. Jednakże ponosiłabym ryzyko przetrzymywania ważnej informacji po stronie klienta. To chyba niekoniecznie dobre rozwiązanie.

Lećmy dalej. Dla wersji drugiej w momencie, gdy potrzebujemy sprawdzić uprawnienia gracza do edycji np. informacji o profilu (czyli fakt, czy te informacje należą do tego gracza) wystarczy wysłać zapytanie do serwera o aktualny identyfikator zalogowanego gracza. Jeśli ten identyfikator jest taki sam, jak identyfikator właściciela informacji, to zostaje wyświetlona strona pełnych danych (z możliwością edycji), a jeśli nie – to wyświetlona strona z dozwolonymi, okrojonymi danymi.

Przejdźmy do wersji trzeciej. W teorii można za każdym razem, gdy chcemy dostać się do jakiś danych np. o graczu, wraz z obiektem gracza zwracać flagę określającą, czy bieżący gracz jest autorem tych informacji. Jednakże musiałabym dołączyć tę flagę do wielu obiektów, którymi będę się posługiwać w aplikacji. Nie jest to zbyt wygodne rozwiązanie.

W związku z powyższym, na ten moment wybrałam rozwiązanie nr 2. Pobieram identyfikator gracza z serwera i (już po stronie frontendu) sprawdzam, czy zgadza się on z identyfikatorem autora danych.

Nie wiem, czy moje rozwiązanie jest najlepsze, ale… jest i działa:) Jeśli ktoś z Was ma lepszy pomysł, to chętnie go poznam.

 

2 uwagi do wpisu “Problem z uprawnieniami użytkowników

    1. Dziękuję za komentarz i chęć pomocy:) Znam Identity, ale wydaje mi się, że mój problem jednak jest troszkę inny i nie zostanie dzięki niemu rozwiązany. Nie mam problemu bezpośrednio z rolą użytkownika (w czym Identity jest niezatąpione) – do tego na pewno dojdę na dalszych etapach pisania aplikacji. Mam problem ze sprawdzeniem, czy użytkownik jest właścicielem danych (=> czy może je edytować).

      Polubienie

Dodaj komentarz