- URLの生成と有効期限の設定
Laravelでは、
Url
ファサードを使用して署名付きURLを生成することができます。まず、url
メソッドを使用してURLを生成し、temporarySignedRoute
メソッドを使用して有効期限を設定します。例えば、以下のコードでは、route('download', ['file' => 'example.pdf'])
という名前付きルートを使用して、example.pdf
というファイルのダウンロードURLを生成し、有効期限を1時間に設定しています。
use Illuminate\Support\Facades\URL;
$url = URL::temporarySignedRoute(
'download',
now()->addHour(),
['file' => 'example.pdf']
);
- 署名付きURLのルート定義
上記の例では、
temporarySignedRoute
メソッドの第1引数にルートの名前を指定しています。このルート名に対応するルート定義を行う必要があります。例えば、以下のようにルート定義を追加します。
Route::get('/download/{file}', function ($file) {
// ファイルのダウンロード処理など
})->name('download');
- 署名付きURLの検証
生成した署名付きURLの検証は自動的に行われます。アプリケーションがリクエストを受け取った際に、自動的に署名の検証が行われます。もし署名が有効期限内であり、改ざんされていなければ、リクエストは正常に処理されます。もし署名が無効であったり、有効期限が切れていた場合は、
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
例外がスローされます。
以上の手順に従うことで、Laravelで署名付きURLを生成してセキュリティを強化することができます。