patieru/url-signer

生成带有过期日期和签名的URL,以防止未经授权的访问

0.0.4 2019-10-03 19:27 UTC

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)。请参阅许可证文件以获取更多信息。