<?php namespace app\app\controller; use app\common\approve\Approvehistory; use think\Config; use think\Controller; class Base extends Controller { public function _initialize() { // 客户端验证签名,除了账密登陆,发送短信,短信接口验证,其他接口都需要验证 $arr = [\'sendmsg\',\'checkmsg\',\'invitecodevalidate\',\'wechatbind\',\'wechatscan\',\'getusercompany\',\'choosecompany\',\'mobilevalidate\',\'editusermobile\']; $action = request()->action(); if (!in_array($action, $arr)) { // $this->verifyClient(); } } /** * 客户端验证签名 */ private function verifyClient() { //删除用户后不能在进行操作 $uid = request()->header(\'uid\'); if (empty($uid)) return $this->api_result([\'msg\' => \'登录信息错误\',\'flag\' => false,\'code\' => 10001,\'data\' => \'nologin\']); $result = db(\'user\') ->field(\'expire_time,status,is_delete\') ->where(\'id\',$uid) ->find(); if (empty($result[\'status\']) || !empty($result[\'is_delete\'])) return $this->api_result([\'msg\' => \'您已被离职\',\'flag\' => false,\'code\' => 10001,\'data\' => \'nologin\']); $key = "kindle_law"; $post = request()->param(); if (isset($post[\'signature\'])) { $sign = $this->getSign($post, $key); if ($sign != substr($post[\'signature\'], 0, -10)) { return $this->apiResult([\'msg\' => \'签名验证失败\', \'code\' => 10001]); } else { $time = substr($post[\'signature\'], -10); $current_time = time(); if (abs($current_time - $time) > 5) { return $this->apiResult([\'msg\' => \'无效签名\', \'code\' => 10001]); } } } else { return $this->apiResult([\'msg\' => \'缺少签名\', \'code\' => 10001]); } } /** * 获取签名 */ private function getSign($post, $key) { unset($post[\'signature\']); ksort($post); $temp = []; foreach ($post as $k => $v) { $temp[] = $k; } $sign = sha1($key . implode("&", $temp)); return $sign; } }