ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

简单接口验签

简单接口验签 后端代码以下代码放在接口公共文件中$apiAuthnewApiAuth();$signResult$apiAuth-verifySign();if(!$signResult[code]){$this-error($signResult[msg]);}ApiAuth类文件?phpclassApiAuth{publicfunction__construct(){$this-paramsinput();// 获取请求参数$this-header$this-app-request-header();// 获取头部请求信息$this-appidsdasdsfafjidfjfjbdfbxbfuixbfiudsbf;// 验签应用id自定义随机字符串$this-appsecretibnuigyugyuvdaskbhjbhbdhasdjhs;// 验签密钥自定义随机字符串//return $this;}/** * 验证签名 * return array */publicfunctionverifySign(){$params$this-params;$header$this-header;// 验证请求头部参数中是否有签名字符串if(!isset($header[api-sign])!$header[api-sign]){return[code0,msg签名不存在];}// 验证请求是否超时if(!isset($params[timestamp])||empty($params[timestamp])){return[code0,msg缺少必填参数];}$expiration600;// 10分钟过期if(time()-$params[timestamp]$expiration){return[code0,msg验证超时请重新发送请求];}$oldSign$header[api-sign];// 请求带过来的签名$newSign$this-makesign();// 现在生成签名// 验证签名if($newSign$oldSign){return[code1,msg];}else{return[code0,msg请求不合法];}}/** * 生成验签 * return string */protectedfunctionmakesign(){$params$this-params;$signMD5(sha1($this-appid.$this-appsecret).MD5($params[timestamp]).sha1($this-appsecret.$this-appid));// 加密规则可按个人自定义请求接口方也是按这种加密规则加密传递api-sign参数给接口return$sign;}}请求接口方前端/小程序/第三方请求头部header必须带参数header:{api-sign$this-sign,}$this-sign计算方式按生成验签的规则一样由接口方提供$this-signMD5(sha1($this-appid.$this-appsecret).MD5($params[timestamp]).sha1($this-appsecret.$this-appid));appid和appsecret也是由接口方提供每个接口请求都必须带上timestamp时间戳参数
返回列表