• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dostęp do danych poprzez API

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
261 wizyt
pytanie zadane 9 lutego 2020 w Algorytmy przez michal Mądrala (5,480 p.)
Jak tworzymy api w celu zabezpieczenia dostępu do danych budujemy oczywiście cały system logowania. Po zalogowaniu użytkownik otrzymuje token którym podpisuje swoje requesty i otrzymuje dostęp do danych co jest logiczne, ale jak zabezpieczyć dane innych użytkowników, żeby każdy miał dostęp tylko do swoich danych. Czy w każdym zapytaniu powinien być przesyłany identyfikator użytkownika i wszystkie zapytania do bazy powinny być filtrowane, ogólnie chodzi mi o to na jakiej zasadzie się to powinno odbywać ?

3 odpowiedzi

0 głosów
odpowiedź 9 lutego 2020 przez Ehlert Ekspert (210,790 p.)

token którym podpisuje swoje requesty

Nie do końca. Token które otrzymuje jest podpisany. Dołącza go tylko do nagłówka requesta.

Czy w każdym zapytaniu powinien być przesyłany identyfikator użytkownika

To zależy do których endpointów. Jeśli chcesz aby pod jakimś urlem była akcja dostępna tylko dla zalogowanych to wymagaj tam tokena.

wszystkie zapytania do bazy powinny być filtrowane, ogólnie chodzi mi o to na jakiej zasadzie się to powinno odbywać ?

Doprecyzuj proszę o co konkretnie chodzi.

komentarz 10 lutego 2020 przez michal Mądrala (5,480 p.)
Podam przykład. Aplikacja obsługuje różne firmy i te firmy mają swoje zamówienia w tabeli np. Orders. Użytkownicy każdej firmy mają dostęp do api i mogą się zalogować. I teraz chodzi mi o to żeby zabezpieczyć tak aby użytkownicy z danej firmy mieli dostęp tylko do swoich zamówień, a nie jak już się zalogują to wykonując zapytanie np oder/133, (podając wybrane id) moogli odczytać zamówienia innych.
0 głosów
odpowiedź 10 lutego 2020 przez michal Mądrala (5,480 p.)
Ktoś się orientuje jak to powinno wyglądać  ?
0 głosów
odpowiedź 11 lutego 2020 przez Qwizi Obywatel (1,280 p.)
edycja 11 lutego 2020 przez Qwizi

Tworzyć endpoint, który jest dostępny tylko dla zalogowanych (przesłanie tokenu). I teraz na backendzie pobierasz tylko te dane, do których ma dostęp zalogowany user. Dajmy na przykład że chcesz mieć endpoint, który pobiera dane zalogowanego usera, więc tworzysz endpoint np. /users/me/ i zabezpieczasz go tokenem. (podam tutaj przykład z Django).

class AccounsMeView(APIView):
  permission_classes = (IsAuthenticated,)
 
 def get(self, request):
  user = request.user # Pobranie instancji zalogowanego uzytkownika
  # Teraz jakieś przykładowe zapytanie do bazy zwracające dane usera
  queryset = User.objects.get(id=user.id)
  serializer = UserSerializer(queryset)
  return Response(serializer.data)
komentarz 11 lutego 2020 przez michal Mądrala (5,480 p.)

I teraz na backendzie pobierasz tylko te dane, do których ma dostęp zalogowany user.

O tą kwestię mi dokładnie chodzi. Czy mam rozumieć że na backendzie po odebraniu requesta który jest dostępny tylko dla zalogowanych powinienem z tokena pobrać id użytkownika i z bazy pobierać  tylko dane które mają to id użytkownika?

Chodzi mi tutaj tylko o schemat działania czy w ten sposób to powinno wyglądać.

Czy może frameworki maja swoje gotowe funkcjonalności do obsłużenia tego ?

Podobne pytania

0 głosów
1 odpowiedź 668 wizyt
pytanie zadane 2 grudnia 2017 w C# przez Resho Nowicjusz (190 p.)
0 głosów
2 odpowiedzi 124 wizyt
0 głosów
1 odpowiedź 272 wizyt
pytanie zadane 15 grudnia 2018 w JavaScript przez tomo9300 Nowicjusz (140 p.)

90,823 zapytań

139,496 odpowiedzi

313,569 komentarzy

60,316 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...