mindlarkdev / laravel-limited-use-signed-url
Laravel 有限使用签名 URL
Requires
- php: ^7.1
- illuminate/support: ^5.6|^6.0
Requires (Dev)
- orchestra/testbench: 3.8.*
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-09-17 02:10:38 UTC
README
这是对 Laravel Single Use Signed URL 的广泛修改。这个版本允许对生成的 URL 进行自定义访问次数,之后该 URL 将不可用。此包专门用于可作为媒体文件临时 src
URL 使用的签名 URL。由于浏览器通常处理这些 URL 的方式,请求将执行两次--一次是预检请求,第二次是实际文件。此实现允许在短时间内使用 URL 两次,然后 URL 将变得不可用。生成的 URL 只对生成它的用户可用,并且可以设置 URL 使用期限。
安装
- 使用 composer 安装
composer require mindlarkdev/laravel-limited-use-signed-url
- 发布配置文件
php artisan vendor:publish
选择 Mindlarkdev\LimitedUseSignedUrl\LaravelLimitedUseSIgnedUrlSeviceProvider
项。
配置文件名为 limited-use-urls.php
,具有以下选项
return [
'expires_in_minutes' => 2,
'uses_allowed' => 2,
]
这些设置允许您设置默认到期时间和允许使用的次数。在控制器中创建 URL 时,也可以覆盖这些参数。
- 运行
php artisan migrate
。
使用方法
我最初从 Laravel Limited Use Signed URL 分支出来,以便使其更难访问嵌入 src
属性 URL 的直接下载链接。原始包对于有限使用的 URL(如密码重置等)非常有用。
首先创建一个接受 {user} 参数的路由,并给它一个名称。例如
Route::get('/play-media/{user}/{content}', [LimitedUseSignedUrlController::class, 'handle']) ->name('limited-use-url') ->middleware('validateLimitedUseSignedUrl');
上面的路由可以是任何您想要的内容。包将在后台添加额外的参数。例如,您可以创建一个如下的路由: Route::get('/play-media/{user}/{media}', ...)
。但是,您必须将 {user}
作为第一个参数包含在路由中。
然后在控制器中,您可以使用以下方法生成对路由的双用签名 URL
$urlData = [ 'route_name' => 'limited-use-url', 'user_id' => auth()->user()->id, 'expires_in_minutes' => 3, // OPTIONAL - default set in config file 'uses_allowed' => 1 // OPTIONAL - default set in config file ]; $extraParams = ['content' => $content->id]; // Extra params will be added to the route. In the above example, we're using {content} $url = MakeLimitedUseSignedUrl::makeUrl('limited-use-url', $urlData, $extraParams);
对于我的用途(作为 src
属性),我可以通过将 $url
传递到视图中并用于音频或视频标签来简单地使用它。
测试
测试目前无法正常工作。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
致谢
- 多用途 URL 实现: midlarkdev
- 原始包由: Intellow
- 所有贡献者
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。
Laravel 包模板
此包是使用 Laravel 包模板 生成的。