Overovanie tokenov
Každá aplikácia s verejným kľúčom overuje používateľské tokeny offline — bez dotazu do databázy a bez volania vydavateľa:
$claims = Jwt::verify($jwt); // or app(UserTokenVerifier::class)->verify($jwt)
$claims->string('sub');
$claims->list('permissions');
Jwt::verify($jwt, 'app-clients'); // pin another audience for this call
Jwt::guard('clients')->verify($jwt); // …or the audience of a configured guardverify() skontroluje podpis, exp, nbf a iat v rámci nastaveného leeway a pripne iss a aud. Kontrola scope, denylistu a verzie tokenu patrí guardu, nie verify(). Explicitne prázdne audience vyhodí JwtMisconfigured.
Typované čítanie claimov
Claims je nemenná kolekcia, ktorá vznikne až po úspešnej kontrole podpisu a času:
$claims->has('org'); // bool
$claims->get('org'); // mixed, null when absent
$claims->require('org'); // mixed, throws ClaimMismatch when absent
$claims->string('sub'); // string
$claims->int('exp'); // int
$claims->list('permissions'); // list<string>
$claims->all(); // array<string, mixed>| Metóda | Vracia | Správanie |
|---|---|---|
has($name) | bool | Či je claim prítomný. |
get($name) | mixed | Hodnota alebo null, ak chýba. |
require($name) | mixed | Ak chýba, vyhodí ClaimMismatch. |
string($name) | string | Ak chýba alebo nie je reťazec, vyhodí ClaimMismatch. |
int($name) | int | Prijme celé floaty ako 1.0; pri desatinných či nečíselných hodnotách vyhodí výnimku. |
list($name) | list<string> | Vyhodí výnimku, ak claim nie je zoznam reťazcov. |
sessionId() | ?string | Claim sid alebo null, ak chýba. |
authMethods() | list<string> | Claim amr alebo [], ak chýba. |
authTime() | ?int | Claim auth_time alebo null, ak chýba. |
all() | array | Celá mapa claimov. |
Ošetrenie zlyhaní
Neplatný token vyhodí podtriedu JwtException. Vydanie claimov, ktoré sa nedajú zakódovať do JSON, vyhodí UnencodableClaims — tiež JwtException — takže jeden catch pokryje vydávanie aj overovanie:
use RoundlyConsulting\Jwt\Facades\Jwt;
use RoundlyConsulting\Jwt\Jose\Exceptions\JwtException;
use RoundlyConsulting\Jwt\Jose\Exceptions\TokenExpired;
try {
$claims = Jwt::verify($jwt);
} catch (TokenExpired $e) {
// Prompt a re-login / refresh flow.
} catch (JwtException $e) {
// Any other token failure: 401.
}Neúspešné Jwt::verify() pred opätovným vyhodením výnimky spustí TokenVerificationFailed. Celú hierarchiu nájdete v časti Výnimky.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.