在 Laravel 中生成 URL

Generating URL's in Laravel

我正在 Laravel 做一个副项目,我是一名初级实习生。目前我需要生成一个 URL 并将其发送到特定的电子邮件,用户可以在有限的时间内查看 pdf 一次。

目前,我正在研究独特的 URL 生成,并希望获得一些建议,以按照标准安全地生成它们,并且仅在有限的时间内生成。

想要一些资源或建议。

我想你要找的是 Laravel 中的 Signed Routes。

可能会有帮助

https://laravel.com/docs/9.x/urls#signed-urls

示例:

首先,在使用签名 URL 之前,您需要检查 App/Http/Kernel 中的下一行是否未注释

'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,

之后在网络路由中你必须添加签名的中间件

Route::get('pdf/{id}/{user}/{response}', PdfController::class)->name('pdf.generate')->**middleware('signed')**

您终于可以使用签名的 url 作为

use \Illuminate\Support\Facades\URL;
URL::temporarySignedRoute('pdf.generate', now()->addHour(), [
    'id' => 25,
    'user' => 100,
    'response' => 'yes'
]);

创建签名的 url 赞

https://example.com/pdf/25/100/yes?expires=1521543365 &signature=d32f53ced4a781f287b612d21a3b7d3c38ebc5ae53951115bb9af4bc3f88a87a

其中签名哈希包括路由中的所有参数并避免操纵,一小时内最好的将永远过期。

投掷 Illuminate\Routing\Exceptions\InvalidSignatureException。 过期后访问时