zoukankan      html  css  js  c++  java
  • 适用于 Laravel API 的签名看守器

    适用于 Laravel API 的签名看守器

    适用于 Laravel Auth 的签名看守器,基于 Laravel Passport。

    安装

    composer require larva/laravel-auth-signature-guard -vv
    

    设置

    修改 /config/auth.php 配置文件,增加 signature 段设置。

    'guards' => [
    	'web'=>[],//原WEB的
    	'api'=>[],//API
    	'signature'=>[//新增的
    		'driver'=>'signature'
    		'provider'=>'users',
    	]
    ]
    

    使用

    使用时在控制器中或者路由中间件均可使用该拦截器;

    class SDKController extends Controller
    {
        public function __construct()
        {
            $this->middleware('auth:signature');
        }
    }
    

    公共请求参数

    公共请求参数是每个接口都需要使用到的请求参数。

    名称 类型 描述
    app_id String 访问服务使用的应用ID。
    timestamp Int 请求的时间戳,10位数整形。
    signature String 签名结果串。
    signature_method String 签名方式,取值:HMAC-SHA1/HMAC-SHA256
    signature_version String 签名版本,取值:1.0
    signature_nonce String 唯一随机数,用于防止网络重放攻击。在不同请求间要使用不同的随机数值。

    参数签名计算 例子

    $params = ['app_id' => 3, 'timestamp' => 1555069945,'signature_method'=>'HMAC-SHA1','signature_version'=>'1.0','signature_nonce'=>'rakdienakdig'];
    
    
    //排序参数
    //按照键名对关联数组进行升序排序
    ksort($params);
    
    //编码
    $stringToSign = urlencode(http_build_query($params, null, '&', PHP_QUERY_RFC3986));
    
    $stringToSign = str_replace(['+', '*'], ['%20', '%2A'], $stringToSign);
    $stringToSign = preg_replace('/%7E/', '~', $stringToSign);
            
    //签名
    $signature = base64_encode(hash_hmac('sha1', $stringToSign, $client->secret.'&', true));
    
    其中参数中的时间戳和世界标准时间相差不能超过1分钟。
    
  • 相关阅读:
    centos/7/isos/x86_64 下载
    Zend Guard Run-time support missing 问题的解决
    php.ini
    PS 基础知识 .pat文件如何使用
    PS 基础知识 .atn文件如何使用
    PS 如何用制作键盘图标
    PS 如何制作WIN7的玻璃化透明窗口效果
    PS常用平面设计制作尺寸
    如何使用Medieval CUE Splitter分割ape,合并ape,制作cue
    如何将MID音乐转换成MP3
  • 原文地址:https://www.cnblogs.com/fyblzds/p/12780280.html
Copyright © 2011-2022 走看看