basekit / signed-url
生成带有过期时间的安全URL
1.0.1
2022-04-04 14:20 UTC
Requires
- php: ~7.3 || ~8.0
- league/uri: ^6.0
- league/uri-components: ^2.2
Requires (Dev)
- php-mock/php-mock-phpunit: ^2.6
- phpstan/phpstan: ^1.5
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.22
This package is auto-updated.
Last update: 2024-09-04 19:30:10 UTC
README
简介
此包用于简单生成和验证签名URL。
什么是签名URL?
签名URL是一种提供有限权限和时间的URL,用于发起请求。签名URL在其查询字符串中包含认证信息,允许无凭证的用户对资源执行特定操作 来源
安装
您可以通过composer安装此包
composer require basekit/signed-url
使用方法
创建带有过期时间的签名URL
$urlSigner = new BaseKit\SignedUrl('secret'); $url = $urlSigner->sign('http://dev.app', new \DateTime("+ 10 days")); echo $url; // http://dev.app?expires=1597606297&signature=2bcbe00d36010bae3e6bc6e6abe79f6cbc135f360285eeb17e9c53753b4b223a"
创建不带过期时间的签名URL
$urlSigner = new BaseKit\SignedUrl('secret'); $url = $urlSigner->sign('http://dev.app'); echo $url; // http://dev.app?expires=1597606297&signature=2bcbe00d36010bae3e6bc6e6abe79f6cbc135f360285eeb17e9c53753b4b223a"
验证签名URL
$url = "http://dev.app?expires=1597606297&signature=2bcbe00d36010bae3e6bc6e6abe79f6cbc135f360285eeb17e9c53753b4b223a"; $urlSignValidator = new BaseKit\SignedUrl('secret'); $valid = $urlSignValidator->validate($url); var_dump($valid); // bool(true)
此包将在URL中追加1个或2个查询字符串参数,表示链接的过期时间(如果提供)和签名。签名本身是通过原始URL、提供的过期日期(如果提供)以及项目特定的密钥生成的。
在对象实例化中,可以覆盖这些查询字符串参数的名称,如下所示
$urlSigner = new BaseKit\SignedUrl('secret', 'expirationParam', 'secureSignature'); $url = $urlSigner->sign('http://dev.app', new \DateTime("+ 10 days")); echo $url; // https://www.dev.app/?expirationParam=1597608096&secureSignature=ef6839ad6b1a4cfca8e3e04bb2a74da0e9d3d9c4d9870125f499f75c9ef5d2b6
测试
composer test
致谢
许可证
MIT许可证(MIT)。请参阅 许可证文件 获取更多信息。