Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Socket.io
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kpt_lucek
Witam

Niejako nie ma odpowiedniejszego działu na forum, to pytam tutaj.


Sprawa ma się następująco, mam architekturę systemu rozproszoną na kilka mniejszych micro-service, w praktyce jest to SSO, REST-API, kilka frontów na ReactJS, front na SF2, oraz (w planach) Socket.IO do serwowania treści real-time.

Moje pytanie opiera się o kwestie uprawnień dołączania/subskrybowania kanałów w Socket, mianowicie chciałbym aby możliwość subskrybcji na kanał x mieli tylko odpowiedni użytkownicy posiadający określone uprawnienie(a) (zostawienie tej kwestii samemu frontendowi to nie najlepszy pomysł), chociaż są też kanały "publiczne", czyli takie, które pozwalają na subskrybję przez każdego.

W praktyce, każdy zalogowany użytkownik ma token i na jego podstawie jestem w stanie wyciągnąć to co jest mi potrzebne.


Nie wiem jak się to w praktyce robi, tj. podpisuje się użytkownika tym samym tokenem (chociażby dostępu do API), generuje się nowe?

Grunt to to, żeby kanały restrykcyjne były dostępne tylko dla odpowiednich osób, a samo sprawdzenie uprawnień musi wyglądać tak, że Socket pyta się API o to czy token "abc" ma dostęp do subskrybcji.


Dzięki i pozdrawiam

---BTW
Moja koncepcja opierała się o sprawdzanie tokenu (jeżeli istnieje) otrzymanego przez API, nie interesuje mnie koncepcja oparta o Cookies
by_ikar
Taki token JWT może być wygenerowany wiele razy przy użyciu tego samego klucza, dlatego że nie sprawdzany tam jest tylko klucz, ale cała "integralność" danego tokenu. Więc nawet jeżeli ktoś będzie próbował coś sobie dopisać, to sume kontrolą szlak trafi.

Przesyłaj jako query string do socket.io ten token a w nim dane jakie potrzebujesz. Po stronie serwera najpierw sprawdzaj poprawność tokenu, dopiero później rób join'a do odpowiedniego roomu.
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.