patieru / url-signer
生成带有过期日期和签名的URL,以防止未经授权的访问
0.0.4
2019-10-03 19:27 UTC
Requires
- php: >=7.2
- league/url: ^3.3
Requires (Dev)
- henrikbjorn/phpspec-code-coverage: ^1.0
- phpspec/phpspec: ^2.2
This package is auto-updated.
Last update: 2024-09-29 05:28:47 UTC
README
此包可以创建有限寿命的URL。这是通过在URL中添加过期日期和签名来完成的。
$urlSigner = new MD5UrlSigner('randomkey'); $urlSigner->sign('https://myapp.com', 30); // => The generated url will be valid for 30 days
这将输出类似于https://myapp.com/?expires=xxxx&signature=xxxx
的URL。
想象一下将此URL邮寄给您的应用程序用户。当用户点击已签名的URL时,您的应用程序可以使用以下方式验证它
$urlSigner->validate('https://myapp.com/?expires=xxxx&signature=xxxx');
安装
此包可以通过Composer安装
$ composer require patieru/url-signer
用法
签名对象可以签名URL并验证已签名的URL。使用密钥来生成签名。
use Patieru\UrlSigner\MD5UrlSigner; $urlSigner = new MD5UrlSigner('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 days
验证URL
要验证已签名的URL,只需调用validate()
方法。这将返回一个布尔值。
$urlSigner->validate('https://myapp.com/?expires=1439223344&signature=2d42f65bd023362c6b61f7432705d811'); // => true $urlSigner->validate('https://myapp.com/?expires=1439223344&signature=2d42f65bd0-INVALID-23362c6b61f7432705d811'); // => false
编写自定义签名者
此包提供了一个使用md5生成签名的签名者。您可以通过实现Patieru\UrlSigner\UrlSigner
接口来创建自己的签名者。如果您让您的签名者扩展Patieru\UrlSigner\BaseUrlSigner
,您只需提供createSignature
方法。
测试
可以使用以下方式运行测试
$ vendor/bin/phpspec run
##集成要快速开始使用Laravel,您可以使用patieru/laravel-url-signer包。
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。