_noNeedCheckSign = $noNeedCheckSign; } /** * 获取无需验证签名的方法名数组 * @return array */ public function getNoNeedCheckSign() { return $this->_noNeedCheckSign; } /** * 当前节点是否需要验证签名 * @param bool $noNeedCheckSign * @return bool true:需要验证签名,false:不需要验证签名 */ public function needCheckSign($noNeedCheckSign = false) { $noNeedCheckSign === false && $noNeedCheckSign = $this->getNoNeedCheckSign(); $noNeedCheckSign = is_array($noNeedCheckSign) ? $noNeedCheckSign : explode(',', $noNeedCheckSign); //为空表示所有方法都需要验证签名,返回true if (!$noNeedCheckSign) { return true; } $noNeedCheckSign = array_map('strtolower', $noNeedCheckSign); $request = Request::instance(); //判断当前请求的操作名是否存在于不需要验证签名的方法名数组中,如果存在,表明不需要验证签名,返回false if (in_array(strtolower($request->action()), $noNeedCheckSign) || in_array('*', $noNeedCheckSign)) { return false; } //默认为需要验证签名 return true; } /** * 验证签名 */ public function check() { $request = Request::instance(); $requestTime = $request->header('request-time'); $sign = $request->header('sign'); $signKey = ConfServiceFacade::get('system.basic.signKey'); $backendSign = strtoupper(md5(md5($requestTime).md5($signKey))); if($sign != $backendSign){ $this->setError($backendSign); return false; } return true; } }