Wpis z mikrobloga

#programowanie #javascript bawię się teraz trochę backendem w node i próbuję zrobić sobie autoryzacje jwt z funkcją refreshToken i takie mi się to trochę #!$%@? wydaje. Jeśli accessToken ma np. ważność 5 minut i np. pobieram jakiś zasób powiedzmy artykuł na stronie. Czytam go sobie i zajmuje mi to więcej niż 5 minut po czym chce mu dać like, dodać komentarz czy coś. I co się wtedy dzieje? odbijam się z błędem, że token wygasł, wywołuję request aby ten token odświeżyć po czym user jeszcze raz musi wykonać akcję? bo na wszystkich przykładach, które klikam np. biblioteka axios ma zdefiniowany interceptors na respondzie z odświeżeniem tokena. Czy działa to trochę inaczej i przed requestem sprawdzam ważność tokena i jeśli minęła to poprzedzam ten request strzałem do api aby uzyskać nowy refreshToken?

Czy jeszcze jest inna opcja, że nikt się tym nie #!$%@? i trzyma tylko tablicę aktywnych tokenów dla danego usera bez jakiegoś refresha :D
  • 4
@IlllI: nie. Długo żyjący refresh token jest wysyłany do serwera, na tej podstawie dostajesz nowy access token i to się dzieje (jeśli dobrze zaimplementowane) bez wiedzy użytkownika nawet.
Leci mniej więcej (zależy od implementacji) tak:
- wysyła request podając stary access token
- odmowa
- wysyła request o nowy access token podając refresh token
- zwrotka z access tokenem
- wysyła pierwotny request ponownie podając już nowy access token

User tego
@Arveit: Dziękuję bardzo o ten ostatni punkt mi chodziło. Większość artykułów np. https://webera.blog/implement-refresh-token-with-jwt-in-react-app-using-axios-1910087c3d7 olewa ten ostatni punkt i ucina całe flow ;D jeszcze mnie zastanawia czy ten pierwotny request po odświeżeniu tokena przez Interceptors mogę jakoś magicznie ponowić w axios jakąś wbudowaną funkcją czy metodą czy muszą tworzyć funkcję pomocniczą, która będzie przyjmować zapytania do serwera, wysyłać je i na wypadek ew. odświeżenia tokena wywoływać ponownie to zapytanie.