mindlarkdev / laravel-limited-use-signed-url

0.0.1 2020-02-16 15:26 UTC

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 使用期限。

安装

  1. 使用 composer 安装
composer require mindlarkdev/laravel-limited-use-signed-url
  1. 发布配置文件
php artisan vendor:publish 

选择 Mindlarkdev\LimitedUseSignedUrl\LaravelLimitedUseSIgnedUrlSeviceProvider 项。

配置文件名为 limited-use-urls.php,具有以下选项

return [
	'expires_in_minutes' => 2,
	'uses_allowed' => 2,
]

这些设置允许您设置默认到期时间和允许使用的次数。在控制器中创建 URL 时,也可以覆盖这些参数。

  1. 运行 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

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件

Laravel 包模板

此包是使用 Laravel 包模板 生成的。