Метод signedRoute
Метод signedRoute класса URL генерирует URL-адрес для именованного маршрута с добавлением криптографической подписи. Первым параметром передаётся имя маршрута, вторым - массив параметров, третьим - время истечения подписи в минутах. Если время не указано, подпись действует бесконечно. Метод возвращает строку с полным подписанным URL-адресом.
Синтаксис
<?php
use Illuminate\Support\Facades\URL;
URL::signedRoute($route, $parameters, $expiration);
?>
Пример
Давайте создадим подписанный URL для маршрута 'dashboard' с идентификатором пользователя:
<?php
use Illuminate\Support\Facades\URL;
$url = URL::signedRoute('dashboard', ['id' => 5]);
echo $url;
?>
Результат выполнения кода:
"http://localhost/dashboard/5?signature=abcd1234567890efgh"
Пример
Создадим подписанный URL с временем истечения через 30 минут:
<?php
use Illuminate\Support\Facades\URL;
$url = URL::signedRoute('payment.confirm', ['order' => 42], 30);
echo $url;
?>
Результат выполнения кода:
"http://localhost/payment/confirm/42?signature=wxyz9876543210lmno&expires=1712345678"
Пример
Используем подписанный URL в Blade-шаблоне для создания ссылки на подтверждение email:
<a href="{{ URL::signedRoute('verification.verify', ['id' => $user->id]) }}">
Подтвердить email
</a>
Сгенерированный HTML-код:
<a href="http://localhost/verify/1?signature=5678abcd1234efgh">
Подтвердить email
</a>
Пример
Проверим подписанный запрос в контроллере с помощью фасада Request:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class VerifyController extends Controller
{
public function verify(Request $request, $id)
{
if (!$request->hasValidSignature()) {
abort(401, 'Invalid signature');
}
return view('verified', ['id' => $id]);
}
}
?>
Смотрите также
-
метод
temporarySignedRoute,
который создаёт подписанный URL с ограниченным сроком действия -
метод
hasSignedRoute,
который проверяет наличие подписанного маршрута -
функция
route,
которая генерирует обычные URL-адреса для маршрутов -
посредник
signed,
который автоматически проверяет подпись для группы маршрутов