---
title: "Fasáda Jwt — JWT for Laravel | Roundly"
description: "Jeden vstupný bod na vydávanie, overovanie a odhlásenie, s handlami Jwt::guard() a Jwt::services(), zverejnením JWKS a fakom."
url: https://roundly-consulting.com/sk/open-source/navody/jwt-for-laravel/fasada-jwt
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[JWT for Laravel](https://roundly-consulting.com/sk/open-source/navody/jwt-for-laravel.md)

# Fasáda Jwt

Fasáda Jwt je jediný zjavný vstupný bod. Automaticky sa registruje ako globálny alias Jwt — alebo importujte RoundlyConsulting\\Jwt\\Facades\\Jwt:

```php
use RoundlyConsulting\Jwt\Facades\Jwt;
use RoundlyConsulting\Jwt\UserTokens\AccessTokenRequest;

// Mint an access token with a fluent, self-documenting request.
$issued = Jwt::mintAccessToken(
    AccessTokenRequest::for($user->id)
        ->email($user->email, verified: $user->hasVerifiedEmail())
        ->tokenVersion($user->token_version)
        ->permissions('posts.view', 'posts.edit')
);

$claims = Jwt::verify($issued->token);   // RS256 + iss/aud pinned
Jwt::logout($issued);                     // denylist it (one-call logout)
$current = Jwt::guard('api')->claims();   // current request's claims on that guard, or null
```

## Celé API

```php
// User tokens (RS256), for the configured jwt.audience
Jwt::mintAccessToken($request);  Jwt::mint($sub, $scope, $ttl, $claims, $aud);
Jwt::mintChallengeToken($sub);   Jwt::mintEmailVerifyToken($sub, $email);
Jwt::verify($jwt, ?$aud);

// One jwt guard — its own audience, settings and current claims
Jwt::guard('clients')->mintAccessToken($request);   // aud = the guard's audience
Jwt::guard('clients')->mint($sub, $scope, $ttl, $claims);
Jwt::guard('clients')->verify($jwt);
Jwt::guard('clients')->claims();      // ?Claims of the current request on that guard
Jwt::guard('clients')->settings();    // JwtGuardSettings
Jwt::guard('clients')->audience();    // string

// Service tokens (HS256)
Jwt::services()->issue('billing', ['job' => 'sync']);
Jwt::services()->verify($jwt);
Jwt::services()->request('billing')->post(...);      // Http client with a fresh bearer
Jwt::services()->authenticate($pendingRequest, 'billing');
Jwt::services()->claims();            // ?Claims of the calling service (service-jwt guard)

// Denylist & logout
Jwt::denylist()->has($jti);  Jwt::denylist()->deny($jti, $until);  Jwt::denylist()->denyToken($issued);
Jwt::logout($issued);        Jwt::denyClaims($claims);

// Key publishing
Jwt::publicKey();   // RsaKey — the configured verification key
Jwt::jwks();        // ['keys' => [[kty, n, e, alg, use, kid?]]] — serve as /.well-known/jwks.json
```

| Metóda | Vracia | Účel |
| --- | --- | --- |
| `mintAccessToken(AccessTokenRequest $request)` | IssuedToken | Vydá prístupový token z fluentného requestu pre nastavené audience. |
| `mint($subject, $scope, $ttl, $extraClaims = [], $audience = null)` | IssuedToken | Vydá token s ľubovoľným scope a explicitnou platnosťou — prípad Scope alebo reťazec. Platnosť nie je ohraničená: 0 alebo menej vydá už expirovaný token (0 ešte prejde overením v rámci jwt.leeway). |
| `mintChallengeToken($subject, $extraClaims = [])` | IssuedToken | Vydá token 2fa\_pending s platnosťou challenge\_ttl. |
| `mintEmailVerifyToken($subject, $email)` | IssuedToken | Vydá token email\_verify s e-mailom a platnosťou verify\_ttl. |
| `verify($jwt, $audience = null)` | Claims | Overí RS256 token; pri chybe spustí TokenVerificationFailed a výnimku pošle ďalej. |
| `guard(string $name)` | GuardTokens | Jeden jwt guard — vydanie, overenie, claimy, nastavenia, audience. Pri inom guarde vyhodí JwtMisconfigured. |
| `services()` | Services | HS256 servisné tokeny — issue, verify, request, authenticate, claims. |
| `denylist()` | Denylist | Úložisko jti denylistu. |
| `logout(IssuedToken $token)` | void | Zaradí práve vydaný token do denylistu až do jeho expirácie. |
| `denyClaims(Claims $claims)` | void | Zaradí token do denylistu podľa overených claimov (jti + exp). |
| `publicKey()` | RsaKey | Nastavený overovací kľúč; ak nie je nastavený, KeyLoadFailed. |
| `jwks()` | array | JWK Set podľa RFC 7517 pre publicKey() — zverejnite ho ako /.well-known/jwks.json. |
| `fake()` | JwtFake | Len na fasáde: nasadí zaznamenávajúci fake — pozrite Testovanie. |

Každé volanie smeruje na kontrakt v kontajneri, ktorý sa vytvorí až pri použití. Aplikácia bez privátneho kľúča tak fasádu bez problémov použije a vaše vlastné implementácie aj testovacie náhrady fungujú ďalej.

## Handle guardu

Jwt::guard($name) vráti handle GuardTokens obmedzený na nastavenia jedného jwt guardu. Jeho vydávanie aj overovanie ide cez manager, takže sa spustí TokenVerificationFailed a Jwt::fake() ich zaznamená:

| Metóda | Vracia | Účel |
| --- | --- | --- |
| `mint($subject, $scope, $ttl, $extraClaims = [])` | IssuedToken | Vydá token s ľubovoľným scope pre audience guardu — s rovnako neohraničenou platnosťou ako Jwt::mint(): 0 alebo menej vydá už expirovaný token. |
| `mintAccessToken(AccessTokenRequest $request)` | IssuedToken | Vydá prístupový token pre audience guardu; request s iným audience vyhodí JwtMisconfigured. |
| `verify(string $jwt)` | Claims | Overí voči audience guardu — token iného guardu zlyhá s ClaimMismatch. |
| `claims()` | ?Claims | Overené claimy aktuálneho requestu na tomto guarde alebo null. Nikdy nie claimy iného guardu. |
| `settings()` | JwtGuardSettings | Efektívne nastavenia, z ktorých driver jwt guard zostaví. |
| `audience()` | string | auth.guards.<name>.audience, inak jwt.audience. |

## Handle servisov

Jwt::services() vráti handle Services, ktorý pri každom volaní získa kontrakty ServiceTokenIssuer a ServiceTokenVerifier z kontajnera, takže ich nahradenie v hostiteľskej aplikácii platí — pozrite Servisné tokeny:

| Metóda | Vracia | Účel |
| --- | --- | --- |
| `issue(?string $audience = null, array $claims = [])` | IssuedToken | Vydá token; audience je predvolene service.audience, registrované názvy claimov sa odmietnu. |
| `verify(string $jwt)` | Claims | Overí prichádzajúci token adresovaný tejto službe. |
| `request(?string $audience = null)` | PendingRequest | Nový odchádzajúci request s čerstvým tokenom. |
| `authenticate(PendingRequest $request, ?string $audience = null)` | PendingRequest | Pripojí čerstvý token k existujúcemu odchádzajúcemu requestu. |
| `claims(?string $guard = null)` | ?Claims | Overené claimy volajúcej služby na service-jwt guarde — prvom s volajúcim, alebo presne na $guard. |

## Zverejnenie overovacieho kľúča

Služby, ktoré vaše tokeny overujú, si verejný kľúč stiahnu ako štandardný JWK Set. jwks() zverejní jwt.public\_key\_path s alg RS256, use sig a — ak je nastavený JWT\_KID — rovnakým kid, aký vydavateľ zapisuje do hlavičky tokenov:

```php
Route::get('/.well-known/jwks.json', fn () => response()->json(Jwt::jwks()));
```

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/jwt-for-laravel.md)
