kennethormandy / craft-s3securedownloads
返回 AWS 签名 URL 并代理下载请求。
5.0.0
2024-06-20 20:52 UTC
Requires
- aws/aws-sdk-php: ^3.295.10
- craftcms/aws-s3: ^2.1.0
- craftcms/cms: ^5.0.0
Requires (Dev)
- codeception/codeception: ^5.0.11
- codeception/module-asserts: ^3.0.0
- codeception/module-yii2: ^1.1.9
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- craftcms/rector: dev-main
- vlucas/phpdotenv: ^5.4.1
This package is auto-updated.
Last update: 2024-09-16 22:43:28 UTC
README
此插件将返回一个用于允许临时访问私有对象的预签名 URL。您可以选择仅允许登录用户下载文件,并强制下载文件(适用于 PDF 文件)。
来自原始开发者,Jonathan Melville
此插件最初是为金融服务行业的客户开发的,该客户希望确保只有登录用户才能访问财务报告的下载,并且下载链接不能被分享。现在您可以将您的 S3 对象保持私有,但通过一个过期的链接临时授予访问权限。
安装
# Require the plugin with composer
composer require kennethormandy/craft-s3securedownloads
然后,安装插件
# Install the plugin via the Control Panel, or by running:
./craft plugin/install s3securedownloads
使用
传入一个资源的条目 ID,它将为该资源返回一个预签名 URL
{% set asset = entry.myAssetField.one() %} <a href="{{ getSignedUrl(asset.id) }}">{{ asset }}</a>
默认情况下,只有登录用户才能生成预签名 URL。这可以在插件设置中更改。
生成的预签名 AWS S3 URL 将在 24 小时后过期,或者根据您在插件设置中配置的时间长度。
选项
文件名
默认情况下,下载将使用与 Craft CMS 资源相同的文件名。或者,可以将自定义文件名传递给 AWS。例如
{% set asset = entry.myAssetField.one() %} <a href="{{ getSignedUrl(asset.id, { filename: 'my-new-filename.png' }) }}">{{ asset }}</a>
事件
kennethormandy\s3securedownloads\services\SignUrl
SignUrl::EVENT_BEFORE_SIGN_URL
SignUrl::EVENT_AFTER_SIGN_URL
use Craft; use yii\base\Event; use kennethormandy\s3securedownloads\events\SignUrlEvent; use kennethormandy\s3securedownloads\services\SignUrl; // … Event::on( SignUrl::class, SignUrl::EVENT_BEFORE_SIGN_URL, function (SignUrlEvent $event) { $asset = $event->asset; Craft::info("Handle EVENT_BEFORE_SIGN_URL event here", __METHOD__); } ); Event::on( SignUrl::class, SignUrl::EVENT_AFTER_SIGN_URL, function (SignUrlEvent $event) { $asset = $event->asset; Craft::info("Handle EVENT_AFTER_SIGN_URL event here", __METHOD__); } );
早期版本
S3 Secure Downloads 可用于 Craft 3、4 和 5。对于在 Craft v2.5.x 上运行的版本,请参阅原始插件。请注意,截至 2020 年 6 月 24 日,所有新的 AWS S3 存储桶都要求使用 Signature Version 4 签名 URL,而原始插件(可以理解)仅使用 Signature Version 2 签名 URL。
许可证
版权所有 © 2016–2019 Jonathan Melville
版权所有 © 2019–2024 Kenneth Ormandy Inc.