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:
- Po pomyślnym uwierzytelnieniu użytkownik otrzymuje JWT, które zawiera ładunek (np. ID użytkownika, role).
- Token jest podpisywany tajnym kluczem, aby zapobiec sfałszowaniu.
- Klient zapisuje token (np. w localStorage) i wysyła go w nagłówku Authorization przy kolejnych żądaniach.
- 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.