spatie / url-signer
生成带有过期日期和签名的URL,以防止未经授权的访问
Requires
- php: ^8.1
Requires (Dev)
- pestphp/pest: ^2.0
README
此包可以创建有限生命周期的URL。这是通过向URL添加过期日期和签名来实现的。
$urlSigner = new Sha256UrlSigner('randomkey'); $urlSigner->sign('https://myapp.com', 30); // => The generated url will be valid for 30 seconds
这将输出一个类似 https://myapp.com/?expires=xxxx&signature=xxxx
的URL。
想象一下将此URL发送给您的应用程序用户。当用户点击已签名的URL时,您的应用程序可以使用以下方式验证它
// returns `true` if valid, `false` if not $urlSigner->validate('https://myapp.com/?expires=xxxx&signature=xxxx');
支持我们
我们投入了大量资源来创建一流的开放源代码包。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从家乡寄来明信片,说明您正在使用我们的哪些包。您可以在我们的联系页面上找到我们的地址。我们在我们的虚拟明信片墙上发布所有收到的明信片。
明信片软件
您可以使用此包(它是MIT许可的),但如果它进入您的生产环境,我们非常感谢您从家乡寄来明信片,说明您正在使用我们的哪些包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
所有明信片都发布在我们的网站上。
安装
此包可以通过Composer安装
composer require spatie/url-signer
用法
签名对象可以签名URL并验证签名的URL。使用一个密钥来生成签名。
use Spatie\UrlSigner\Sha256UrlSigner; $urlSigner = new Sha256UrlSigner('mysecretkey');
生成URL
通过向“sign”方法提供一个常规URL和过期日期,可以生成签名的URL。
$expirationDate = (new DateTime())->modify('10 days'); $urlSigner->sign('https://myapp.com', $expirationDate); // => The generated url will be valid for 10 days
如果提供整数作为过期日期,则该URL将在指定的时间内有效。
$urlSigner->sign('https://myapp.com', 30); // => The generated URL will be valid for 30 seconds
验证URL
要验证签名的URL,只需调用“validate”方法。这将返回一个布尔值。
$urlSigner->validate('https://myapp.com/?expires=1439223344&signature=a479abde194d111022a6831edbda29b14e7bdb760438a8a0be2556cd1a6c23fa'); // => true $urlSigner->validate('https://myapp.com/?expires=1439223344&signature=a479abde194d111022a6831edbda-INVALID-29b14e7bdb760438a8a0be2556cd1a6c23fa'); // => false
编写自定义签名者
此包提供使用SHA256生成签名的签名者。您可以通过实现Spatie\UrlSigner\Contracts\UrlSigner
接口来创建自己的签名者。如果您让您的签名者扩展Spatie\UrlSigner\AbstractUrlSigner
,则只需提供createSignature
方法。
测试
可以使用以下方式运行测试
composer test
集成
要快速开始使用Laravel,您可以使用spatie/laravel-url-signer包。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现有关安全性的错误,请通过security@spatie.be发送电子邮件,而不是使用问题跟踪器。
致谢
关于Spatie
Spatie是比利时安特卫普的一家网络设计公司。您可以在我们的网站上找到所有我们的开源项目的概述。
许可证
麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。