Viacero guardov
Viacero typov účtov — napríklad users a clients, každý s vlastnou tabuľkou — môže bežať na vlastnom jwt guarde. Každý jwt guard hľadá sub cez vlastný provider, preto dajte každému guardu vlastné audience; inak sa token používateľa so sub = 5 prihlási ako klient č. 5:
// config/auth.php
'guards' => [
'users' => ['driver' => 'jwt', 'provider' => 'users', 'audience' => env('JWT_USERS_AUDIENCE', 'app-users')],
'clients' => ['driver' => 'jwt', 'provider' => 'clients', 'audience' => env('JWT_CLIENTS_AUDIENCE', 'app-clients')],
],Kľúče pre jednotlivé guardy
Každý guard číta tieto voliteľné kľúče z vlastného poľa auth.guards.<name>. Nenastavený alebo prázdny kľúč prevezme globálnu hodnotu, no zadaný a nepoužiteľný — nereťazcový scope, identity, ktorá nie je ClaimsAuthenticatable — vyhodí JwtMisconfigured s názvom kľúča:
| Kľúč v auth.guards.<name> | Ak chýba, platí | Typ |
|---|---|---|
audience | jwt.audience | Neprázdny reťazec; nenastavený alebo prázdny prevezme globálnu hodnotu. |
scope | jwt.guard.scope | Reťazec alebo prípad Scope; nenastavený alebo prázdny prevezme globálnu hodnotu, nereťazcová hodnota vyhodí JwtMisconfigured. |
token_version | jwt.guard.token_version | Invokable class-string alebo closure (nepreživie config:cache). |
check_denylist | jwt.guard.check_denylist | Bool; rozumie env zápisom true/false, 1/0, on/off a yes/no. Nenastavený alebo prázdny prevezme globálnu hodnotu — prázdna hodnota nikdy neznamená false. Nerozpoznaná hodnota vyhodí JwtMisconfigured — globálnu hodnotu nikdy neprevezme. |
identity | jwt.guard.identity | Class-string triedy ClaimsAuthenticatable; nenastavený alebo prázdny prevezme globálnu hodnotu, čokoľvek iné vyhodí JwtMisconfigured. Ak chýba na oboch úrovniach, TokenUser. |
Vydávanie a čítanie pre konkrétny guard
Vydajte token pre konkrétny guard, overte ho a čítajte jeho nastavenia cez Jwt::guard($name):
$clients = Jwt::guard('clients');
$clients->mintAccessToken(AccessTokenRequest::for($client->id)); // aud = 'app-clients'
$clients->mint((string) $client->id, 'access', ttl: 900); // any scope, for the guard's audience
$clients->verify($jwt); // a users token fails here (ClaimMismatch)
$clients->audience(); // 'app-clients' — auth.guards.clients.audience, else jwt.audience
$clients->settings(); // JwtGuardSettings: guard, audience, scope, checkDenylist, identity, tokenVersion
$clients->claims(); // that guard's verified claims, or null — never another guard'sJwt::guard() vyhodí JwtMisconfigured pre guard, ktorý nie je jwt guard, a mintAccessToken() odmietne request, ktorý už uvádza iné audience, namiesto toho, aby ho potichu presmeroval. jwt.audience zostáva povinné — je to predvolená hodnota pre každý guard bez vlastného audience. Token vydaný pre audience jedného guardu dostane na každom inom guarde 401.
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.