Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Client rest - nadawanie dostępu
Forum PHP.pl > Forum > Przedszkole
Kishin
Witam,

Mam takie pytanie, pisze sobie clienta do RESTa, mam już w sumie wszystko gotowe natomiast chciałbym mieć możliwość w jakis sposób ograniczać użytkownikowi dostęp
do poszczególnych metod.

Napisałem coś takiego ale mam wątpliwości czy coś takiego zachowuje sie w jakichkolwiek standardach, ma ktoś jakieś inne propozycje jak to zrobić?

  1.  
  2. function checkAcces($method)
  3. {
  4. $allowed=array('metoda1','metoda2','metoda3');
  5.  
  6. if(!in_array($method,$allowed))
  7. throw new Exception('brak dostępu do metody lub błędna metoda');
  8.  
  9. return 'ok';
  10.  
  11.  
  12. }
  13.  


----

No panowanie i panie, nikt nie pomoże? wink.gif
Pyton_000
Teraz dość mocno pcha się w JWT (Json Web Token)
https://www.sitepoint.com/php-authorization...son-web-tokens/
kayman
to raczej wygląda na próbę stworzenie serwera a nie klienta

serwer restowy ma określoną strukturę powiązaną z request_method więc na imo na początku tym się różnicuje i do tego dopina akcje

POST -> metody do post
GET -> metody do get
PUT -> metody do put
etc
Kishin
Cytat(kayman @ 5.12.2016, 12:59:50 ) *
to raczej wygląda na próbę stworzenie serwera a nie klienta

serwer restowy ma określoną strukturę powiązaną z request_method więc na imo na początku tym się różnicuje i do tego dopina akcje

POST -> metody do post
GET -> metody do get
PUT -> metody do put
etc


Wiem ,że jest podział na request_method, ale nie widze za bardzo powiązania Twojej uwagi z moim pytaniem.

Na przykładzie:

mam sobie 3 metody, i chce żeby uzytkownik mógł korzystać tylko z metody_2.

to że na tej metodzie moge wykonywać różne żądania czyli post get put itp póki co mnie nie interesuje, chce pozwolić użytkownikowi uzywać wszystkiego powiązanego z tą nazwą metody.

kayman
ja sobie rest wyobrażam mniej więcej tak -> https://spring.io/understanding/REST

więc w rest nie mam jak przypiąć metody należącej do GET->pobierz do requesta POST->dodaj bo co innego z założenia robi

ale nie trzeba przecież stosować czystego rest

można zrobić serwer w którym GETem się pobiera a POSTem dodaje/modyfikuje/usuwa, tu bardzo łatwo ograniczyć dostęp na "tylko do odczytu" czy tylko dla innych akcji

do tego jak to pisał Python + token lub jakaś odpowiednik sesji po autoryzacji
Kishin
Ja nie tworze serwer tylko client.

Ok to jeszcze inaczej:

Mam sobie metody api/books, api/personel

get api/books ->pobiera dane o ksiazkach

post api/books ->dodaje ksiazki

get api/personel->pobiera dane o pracownikach

post api/personel->dodaje pracownika

No i teraz chce komuś dać dostęp do metody api/books, robiąc to bedzie miał z automatu dostęp do pobierania i dodawania.

Na ta chwile myślałem żeby za każdym razem poprostu dodawać metode do klasy

  1. public function books(array $post)
  2. {
  3. return $this->call(self::API_URL . 'books', $post);
  4. }
  5.  


i tak za każdym razem przy dodawaniu nowego dostępu, ale gdy będzie sporo metod to zrobi sie to kłopotliwe i nieczytelne
kayman
to trzeba było od razu napisać że robisz przejściówkę między klientem a api smile.gif

mimo wszystko postąpił bym podobnie ale może inni mają lepsze pomysły
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.