РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
428 of 1392 menu

Метод temporarySignedRoute

Метод temporarySignedRoute применяется к экземпляру класса URL и генерирует подписанный URL с ограниченным сроком действия. Первым параметром передаётся имя маршрута, вторым - время жизни ссылки в минутах, третьим - массив параметров маршрута. Опционально четвертым параметром можно передать имя хеш-алгоритма, используемого для подписи. Метод возвращает строку с полным URL-адресом, содержащим подпись и временную метку истечения.

Синтаксис

<?php URL::temporarySignedRoute($name, $expiration, $parameters); ?>

Пример

Давайте создадим временную подписанную ссылку для подтверждения email, которая будет действительна 60 минут:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\URL; use App\Models\User; class UserController extends Controller { public function sendVerificationEmail(User $user) { $url = URL::temporarySignedRoute( 'verification.verify', 60, ['id' => $user->id, 'email' => $user->email] ); // Send email with verification link echo $url; } } ?>

Результат выполнения кода:

"https://example.com/verify/1?email=user%40example.com&expires=1640995200&signature=7e8f9a2b..."

Пример

Давайте создадим временную ссылку для скачивания отчёта, которая будет действительна 15 минут и содержит дополнительные параметры:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\URL; use App\Models\Report; class ReportController extends Controller { public function generateDownloadLink(Report $report) { $url = URL::temporarySignedRoute( 'report.download', 15, [ 'id' => $report->id, 'format' => 'pdf', 'userId' => auth()->id() ] ); echo $url; } } ?>

Результат выполнения кода:

"https://example.com/report/5/download?format=pdf&userId=123&expires=1640996100&signature=3a4b5c6d..."

Пример

Давайте создадим временную подписанную ссылку и проверим её валидность с использованием помощника hasValidSignature в контроллере:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\URL; use Illuminate\Http\Request; use App\Models\User; class VerifyController extends Controller { public function createLink(User $user) { $url = URL::temporarySignedRoute( 'verify.email', 30, ['id' => $user->id, 'hash' => sha1($user->email)] ); echo $url; } public function verify(Request $request, $id) { if (!URL::hasValidSignature($request)) { echo "Invalid or expired link"; return; } $user = User::find($id); $user->email_verified_at = now(); $user->save(); echo "Email successfully verified"; } } ?>

Результат выполнения кода:

"https://example.com/verify/123?hash=abc123...&expires=1640997000&signature=9f8e7d6c..."

Смотрите также

  • метод signedRoute,
    который создаёт постоянные подписанные ссылки без ограничения по времени
  • метод hasValidSignature,
    который проверяет валидность подписанной ссылки
  • метод name,
    который присваивает имя маршруту для последующей генерации ссылок
  • функция route,
    которая генерирует обычные URL-адреса без подписи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить