This package can create URLs with a limited lifetime. This is done by adding an expiration date and a signature to the URL.
$urlSigner = new MD5UrlSigner('randomkey');
$urlSigner->sign('https://myapp.com', 30);
// => The generated url will be valid for 30 days
This will output an URL that looks like https://myapp.com/?expires=xxxx&signature=xxxx
.
Imagine mailing this URL out to the users of your application. When a user clicks on a signed URL your application can validate it with:
$urlSigner->validate('https://myapp.com/?expires=xxxx&signature=xxxx');
Spatie is a webdesign agency in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
You're free to use this package (it's MIT-licensed), but if it makes it to your production environment you are required to send us a postcard from your hometown, mentioning which of our package(s) you are using.
Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium.
The best postcards will get published on the open source page on our website.
The package can installed via Composer:
$ composer require spatie/url-signer
A signer-object can sign URLs and validate signed URLs. A secret key is used to generate signatures.
use Spatie\UrlSigner\MD5UrlSigner;
$urlSigner = new MD5UrlSigner('mysecretkey');
Signed URLs can be generated by providing a regular URL and an expiration date to the sign
method.
$expirationDate = (new DateTime)->modify('10 days');
$urlSigner->sign('https://myapp.com', $expirationDate);
// => The generated url will be valid for 10 days
If an integer is provided as expiration date, the url will be valid for that amount of days.
$urlSigner->sign('https://myapp.com', 30);
// => The generated url will be valid for 30 days
To validate a signed URL, simply call the validate()
method. This will return a boolean.
$urlSigner->validate('https://myapp.com/?expires=1439223344&signature=2d42f65bd023362c6b61f7432705d811');
// => true
$urlSigner->validate('https://myapp.com/?expires=1439223344&signature=2d42f65bd0-INVALID-23362c6b61f7432705d811');
// => false
This packages provides a signer that uses md5 to generate signature. You can create your own
signer by implementing the Spatie\UrlSigner\UrlSigner
-interface. If you let your signer extend
Spatie\UrlSigner\BaseUrlSigner
you'll only need to provide the createSignature
-method.
The tests can be run with:
$ vendor/bin/phpspec run
##Integrations To get started quickly in Laravel you can use the spatie/laravel-url-signer package.
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker.
Spatie is a webdesign agency in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
The MIT License (MIT). Please see License File for more information.