Výnimky
RoundlyConsulting\Jwt\Jose\Exceptions\JwtException rozširuje RuntimeException a je základom každej chyby tokenu. Zachyťte ju na jednotné ošetrenie alebo zachyťte podtriedu pre presnú príčinu:
| Výnimka | Kedy nastane |
|---|---|
JwtException | Základná trieda — zachyťte ju a ošetríte akékoľvek zlyhanie tokenu. |
MalformedToken | Token nemá tri segmenty, má neplatný base64url, hlavička či payload nie je JSON objekt, alebo má viac než 8 KB. |
AlgorithmMismatch | alg v hlavičke nie je pripnutý algoritmus alebo typ kľúča nesedí — blokuje alg:none a zámenu RS256↔HS256. |
InvalidSignature | Podpis RS256 alebo HS256 nesedí; aj neznámy iss servisného tokenu v režime tajomstiev pre jednotlivé služby. |
UnexpectedTokenType | Hlavička typ je prítomná a nie je JWT (explicitné typovanie podľa RFC 8725). |
UnencodableClaims | Claim sa nedá serializovať do JSON, napr. ne-UTF-8 bajty v doplnkovom claime. |
TokenExpired | exp mínus leeway je v minulosti. |
TokenNotYetValid | nbf alebo iat je v budúcnosti nad rámec leeway. |
UnexpectedCriticalHeader | Token nesie hlavičku crit. |
ClaimMismatch | Povinný claim chýba alebo má zlý typ; nesedí pripnutý iss/aud; zlyhá kontrola scope, audience či vydavateľa servisného tokenu. |
KeyLoadFailed | Kľúč chýba, nedá sa prečítať, nie je RSA, má menej než 2048 bitov alebo nie je nastavená jeho cesta. |
EmptySecret | HMAC tajomstvo je prázdne. |
PemAsHmacSecret | Ako HMAC tajomstvo bol podaný kľúč v PEM formáte. |
WeakSecret | HMAC tajomstvo má menej než 32 bajtov, je jeden opakovaný bajt alebo obsahuje surový DER kľúč. |
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.
}Chybná konfigurácia je 500, nie 401
Oba guardy premenia JwtException na null používateľa — teda 401. Chyby konfigurácie touto cestou ísť nesmú, preto zámerne nie sú JwtException:
- RoundlyConsulting\Jwt\Exceptions\JwtMisconfigured — nenastavený issuer či audience (null alebo prázdny), názov guardu, ktorý nie je jwt guard, nevolateľná token_version, mintAccessToken() na guarde s requestom pre iné audience alebo konfiguračná hodnota nesprávneho tvaru — TTL five, nerozpoznaný prepínač, chybná dvojica v service.secrets či identity, ktorá nie je ClaimsAuthenticatable.
- RoundlyConsulting\Jwt\ServiceTokens\Exceptions\ServiceAuthMisconfigured — chýbajúce alebo slabé tajomstvo, chýbajúci názov služby, chýbajúce audience či vlastný vydavateľ pri vydaní, chýbajúci vlastný záznam v mape tajomstiev alebo rezervované doplnkové claimy.
- KeyLoadFailed je JwtException, no guard jwt ju vyhodí ďalej ešte pred všeobecným ošetrením — chýbajúci či neplatný RSA kľúč je chyba prevádzky, nie neprihlásený volajúci.
Správy KeyLoadFailed sú konkrétne: pomenujú chýbajúcu cestu aj riešenie, napríklad spustiť jwt:generate-keys alebo nastaviť env premennú.
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.