Sobes.tech
Junior — Middle

Czy możesz podzielić się swoim doświadczeniem z używania JSON Web Tokens w projektach?

sobes.tech AI

Odpowiedź od AI

W projektach PHP używałem JSON Web Tokens (JWT) do implementacji uwierzytelniania i autoryzacji użytkowników. JWT pozwala na przesyłanie informacji o użytkowniku w zaszyfrowanej formie między klientem a serwerem bez konieczności przechowywania sesji na serwerze.

Główne kroki korzystania z JWT:

  1. Po pomyślnym uwierzytelnieniu użytkownik otrzymuje JWT, które zawiera ładunek (np. ID użytkownika, role).
  2. Token jest podpisywany tajnym kluczem, aby zapobiec sfałszowaniu.
  3. Klient zapisuje token (np. w localStorage) i wysyła go w nagłówku Authorization przy kolejnych żądaniach.
  4. Serwer weryfikuje podpis tokena i wyciąga dane, aby określić prawa dostępu.

Przykład tworzenia JWT za pomocą biblioteki firebase/php-jwt:

use Firebase\JWT\JWT;

$payload = [
    'iss' => 'your-domain.com',
    'iat' => time(),
    'exp' => time() + 3600, // czas ważności 1 godzina
    'userId' => 123
];

$jwt = JWT::encode($payload, $secretKey, 'HS256');

// Do weryfikacji:
$decoded = JWT::decode($jwt, $secretKey, ['HS256']);

Użycie JWT upraszcza skalowanie aplikacji, ponieważ nie wymaga przechowywania sesji na serwerze, ale ważne jest odpowiednie ustawienie czasu ważności tokena i obsługa jego odświeżania.