Autorizácia z claimov
Nastavte authorize_from_claims na true (JWT_AUTHORIZE_FROM_CLAIMS=true) a oprávnenia uvedené v claime permissions sa udelia cez hook Gate::before:
JWT_AUTHORIZE_FROM_CLAIMS=true// Issuer: bake the abilities into the token.
Jwt::mintAccessToken(
AccessTokenRequest::for($user->id)->permissions('posts.view', 'posts.edit')
);
// Any verifying service, claims mode:
if ($request->user()->can('posts.edit')) {
// allowed straight from the token's permissions claim
}
Route::middleware(['auth:api', 'can:posts.edit'])->post('/posts', StorePostController::class);Ak oprávnenie nenájde, hook vráti null, nie false, takže vaše vlastné gates a policies sa vyhodnotia ďalej.
Ktoré identity sa zapájajú
- Claims režim — používateľ je TokenUser (alebo akákoľvek identita, ktorá implementuje RoundlyConsulting\Jwt\UserTokens\Contracts\ChecksPermissions, pozrite Rozšírenie) a odpovedá zo svojich claimov: can() pre neho funguje všade, kde sa kontroluje.
- Provider režim — používateľ je váš Eloquent model, preto hook prečíta claim permissions z tokenu, ktorý ho prihlásil na aktívnom guarde requestu (na tom, ktorý vybral auth:<guard>, alebo Auth::shouldUse()).
V provider režime udelí oprávnenie len presne tejto inštancii používateľa: kópia toho istého používateľa načítaná samostatne (Gate::forUser(User::find($id))), používateľ nastavený bez tokenu (actingAs($user, 'api')) ani claim permissions so zlým typom z tokenu nič nezískajú.
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.