wenhsing / url-sign
URL签名
1.0.2
2022-05-30 16:44 UTC
Requires
- php: ^7.2 || ^7.3
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-09-29 05:22:35 UTC
README
关于
url-sign
包是一个简单的URL参数签名验证,主要在Laravel中使用。
安装和卸载
将 wenhsing/url-sign
添加到你的 composer.json
文件中,并更新相应的依赖项:
composer require wenhsing/url-sign
如果你不想使用或者遇到了其他问题,可以通过以下方式卸载,然后再重新安装:
composer remove wenhsing/url-sign
基本使用方法
require_once "./vendor/autoload.php"; $c = new \Wenhsing\UrlSign\UrlSignManager(); $c->verify('https://wenhsing.com/?timestamp=1639640957&sign=14e8ae7845907b031bfd8af08594f421'));
在 Laravel 中使用
打开 app/Http/Kernel.php
文件,将 UrlSignMiddleware
中间件添加到 $middlewareGroups
的对应字段下:
protected $middlewareGroups = [ // 其他分组 'api' => [ \Wenhsing\UrlSign\Laravel\Middleware\UrlSignMiddleware::class, // 其他中间件 ] ];
当然,你也可以将 UrlSignMiddleware
中间件添加到 $middleware
属性中,在全局进行签名验证:
protected $middleware = [ \Wenhsing\UrlSign\Laravel\Middleware\UrlSignMiddleware::class, // 其他中间件 ];
如果你想自定义验证失败后的返回方式,可以通过继承 \Wenhsing\UrlSign\Laravel\Middleware\UrlSignMiddleware
类,然后重写 errorResponse
方法,并将上面添加的中间件替换为你创建的中间件:
<?php namespace App\Http\Middleware; use Wenhsing\UrlSign\Laravel\Middleware\UrlSignMiddleware; class VerifySign extends UrlSignMiddleware { public function errorResponse($request, Closure $next) { // } }
配置
如果你的 config
目录下不存在 url-sign.php
配置文件,可以通过以下方式生成文件:
php artisan vendor:publish --tag="url-sign"
然后修改 url-sign.php
配置文件:
<?php return [ 'default' => env('URL_SIGN_DRIVER', 'md5'), 'md5' => [ // 需要排除的路径,条目可以参考如下写法 'except' => [ '/', 'a/test', 'b/test2/*', ], // 签名加签密钥 'secret_key' => '', // 允许签名请求时间与当前时间的误差值 'time_error' => 300, ] ];
驱动扩展
如果你想自定义驱动,可以编写一个类,然后通过 extend 进行扩展,例如:
require_once "./vendor/autoload.php"; $c = new \Wenhsing\UrlSign\UrlSignManager(); $c->extend('extendName', function ($config) { return new Example($config); }); $c->driver('extendName')->verify('https://wenhsing.com/?timestamp=1639640957&sign=14e8ae7845907b031bfd8af08594f421'));
在 Laravel 扩展中可以参考以下方式:
$c = app(Wenhsing\UrlSign\UrlSignManager::class); $c->extend('wenhsing', function ($config) { return new Test($config); }); $c->driver('wenhsing')->verify('https://wenhsing.com/?timestamp=1639640957&sign=14e8ae7845907b031bfd8af08594f421');