Devloger

Podpisane Adresy w Laravelu

Podpisane Routy / URLe w Laravelu

Podpisane adresy w Laravelu

Od wydania Laravela w wersji 5.6.12 mamy dostęp do nowej funkcjonalności - podpisane routy/urle/adresy Emotikon uśmiechniętej buźki!

Jest to świetna funkcjonalność którą z całą pewnością warto znać. Daje ona bardzo dużo ciekawych możliwości Emotikon uśmiechniętej buźki.

Podpisane Adresy

Mechanizm ten pozwala w bardzo prosty sposób stworzyć "podpisane" URLe do routów z nazwami. Adresy te posiadają podpis w postaci zahaszowanej sygnatury, która jest dołączona do adresu jako query string. Pozwala to na weryfikację URLa - że nie został on zmodyfikowany od momentu jego wygenerowania. Podpisane URLe mogą być szczególnie użyteczne dla routów które są publicznie dostępne ale jednak potrzebujemy jakiejś ochrony przeciwko manipulacji adresów.

Użycie

Wykorzystaniem tej funkcjonalności może być dla przykładu implementacja publicznego interfejsu rezygnacji z subskrypcji (link wysłany do użytkownika przez wiadomość e-mail).

By stworzyć taki podpisany adres powiązany z nazwanym routem wystarczy użyć metody statycznej signedRoute na fasadzie URL.

return URL::signedRoute('unsubscribe', ['user' => 1]);

Adresy podpisane tymczasowo

Mamy również możliwość utworzenia tymczasowo podpisanych adresów, które wygasają po określonym czasie. Stworzenie ich jest równie proste, wystarczy użyć metody statycznej temporarySignedRoute.

return URL::temporarySignedRoute(
    'unsubscribe', now()->addMinutes(30), ['user' => 1]
);

Walidacja podpisanych adresów

By zweryfikować czy przychodzące żądanie zawiera poprawną sygnaturę możemy wykorzystać metodą hasValidSignature na obiekcie przychodzącego żądania.

Route::get('/unsubscribe/{user}', function (Request $request) {
    if (! $request->hasValidSignature()) {
        abort(401);
    }

 
    // ...
})->name('unsubscribe');

Walidacja podpisanych adresów z użyciem middleware'a

Alternatywnie jest możliwość przypisania middleware'a Illuminate\Routing\Middleware\ValidateSignature do interesującego nas route'a.

Pamiętaj tylko, że jeśli middleware ten nie jest obecny w twojej aplikacji, to powinieneś go przypisać go do tablicy routeMiddleware w kernelu Laravela.

protected $routeMiddleware = [
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
];

Gdy tylko zarejestrujesz ten middleware w kernelu twojej aplikacji, to będziesz mógł go podpiąć do wybranych routów. Jeśli przychodzące żądanie nie posiada poprawnej sygnatury, wówczas middleware ten wyrzuci automatycznie odpowiedź 401.

Route::post('/unsubscribe/{user}', function (Request $request) {
    // ...
})->name('unsubscribe')->middleware('signed');

Podsumowując

Świetna funkcjonalność która ma wiele zastosowań Emotikon uśmiechniętej buźki. Warto znać, używać i pamiętać o niej. Na pewno przyda się nie raz Emotikon uśmiechniętej buźki.

Dziękuję ci za lekturę tego artykułu, jeśli jakkolwiek uznasz go za przydatny to proszę podziel się nim z innymi udostępniając go Emotikon uśmiechniętej buźki. Proszę cię również o zostawienie komentarza pod tym wpisem i zapraszam cię gorąco do lektury innych moich artykułów, szczególnie tych związanych z Laravelem Emotikon uśmiechniętej buźki.

A tymczasem życzę ci dobrego dnia, bywaj Emotikon uśmiechniętej buźki!

Krystian Bogucki

Podobał Ci się ten artykuł?

Jeśli tak, to zarejestruj się aby otrzymywać powiadomienia o nowych artykułach. Nie ujawnię nikomu Twojego adresu!