abovesky / url-auth
生成带有过期日期和签名的URL,以防止未经授权的访问
v1.0.3
2017-10-20 01:04 UTC
Requires
- php: >=5.3.0
- indigophp/hash-compat: ^1.1
- league/url: ^3.3
This package is not auto-updated.
Last update: 2024-09-29 05:01:32 UTC
README
此包可以创建有限生命周期的URL。这是通过向URL添加过期日期和签名来实现的。
$urlAuth = new Md5('randomkey'); $urlAuth->sign('https://myapp.com', 30, 'days'); // => The generated url will be valid for 30 days
这将输出类似 https://myapp.com/?expires=xxxx&signature=xxxx
的URL。
想象一下将此URL发送给您的应用程序用户。当用户点击签名的URL时,您的应用程序可以验证它,使用
$urlAuth->validate('https://myapp.com/?expires=xxxx&signature=xxxx');
安装
该包可以通过Composer安装
composer require abovesky/url-auth
使用
签名对象可以签名URL并验证签名的URL。使用一个秘密密钥来生成签名。
use abovesky\UrlAuth\Md5; $urlAuth = new Md5('mysecretkey');
生成URL
可以通过向sign
方法提供常规URL和过期日期来生成签名URL。
$expirationDate = (new DateTime)->modify('10 days'); $urlAuth->sign('https://myapp.com', $expirationDate); // => The generated url will be valid for 10 days
如果提供一个整数作为过期日期,则URL将有效该天数。
$urlAuth->sign('https://myapp.com', 30, 'days'); // => The generated url will be valid for 30 days
验证URL
要验证签名URL,只需调用validate()
方法。这将返回一个布尔值。
$urlAuth->validate('https://myapp.com/?expires=1439223344&signature=2d42f65bd023362c6b61f7432705d811'); // => true $urlAuth->validate('https://myapp.com/?expires=1439223344&signature=2d42f65bd0-INVALID-23362c6b61f7432705d811'); // => false
编写自定义签名者
此包提供了一个使用md5生成签名的签名者。您可以通过实现abovesky\UrlAuth\iUrlAuth
接口来创建自己的签名者。如果您让您的签名者扩展abovesky\UrlAuth\Base
,则只需提供createSignature
-方法。
测试
可以使用以下命令运行测试
$ vendor/bin/phpspec run
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。