spatie/url-signer

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

资助包维护!
spatie

安装次数: 1,400,851

依赖项: 18

建议者: 0

安全: 0

星标: 424

关注者: 15

分支: 46

开放问题: 1

2.1.1 2023-12-06 11:03 UTC

README

Latest Version on Packagist Software License Quality Score Total Downloads

此包可以创建有限生命周期的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)。请参阅许可证文件获取更多信息。