过滤重复请求

dev
李春波 2 years ago
parent eb5058f39a
commit 2578eb1705
  1. 11
      app/wechat/controller/IndexController.php
  2. 50
      support/initialization.php

@ -8,6 +8,8 @@ use app\admin\model\Platform;
use app\common\model\Authorizers;
use app\common\service\Forward;
use app\common\service\wechat\OpenPlatform;
use support\Cache;
use support\Log;
use support\Request;
use Tinywan\ExceptionHandler\Exception\BadRequestHttpException;
@ -23,7 +25,14 @@ class IndexController extends BaseController
$xml = $request->rawBody();
$xml = simplexml_load_string($xml);
if (empty($xml)) return '请求体为空';
// 过滤掉重复请求
$key = 'wechat_mp_' . $xml->AppId;
if (Cache::has($key)) {
Log::info('收到重复请求,已过滤', [(string)$xml->AppId]);
return '请求重复';
} else {
Cache::set($key, (string)$xml->AppId, 3200);
}
if ($appid) {
// 转发消息与事件推送请求给第三方
$forwardResult = Forward::run($request, $appid, 'app');

@ -5,28 +5,28 @@
* @param $default
* @return array|bool|mixed|string|null
*/
function env(string $key, $default = null)
{
$value = getenv($key);
if ($value === false) {
return value($default);
}
switch (strtolower($value)) {
case 'true':
case '(true)':
return true;
case 'false':
case '(false)':
return false;
case 'empty':
case '(empty)':
return '';
case 'null':
case '(null)':
return null;
}
if (($valueLength = strlen($value)) > 1 && $value[0] === '"' && $value[$valueLength - 1] === '"') {
return substr($value, 1, -1);
}
return $value;
}
//function env(string $key, $default = null)
//{
// $value = getenv($key);
// if ($value === false) {
// return value($default);
// }
// switch (strtolower($value)) {
// case 'true':
// case '(true)':
// return true;
// case 'false':
// case '(false)':
// return false;
// case 'empty':
// case '(empty)':
// return '';
// case 'null':
// case '(null)':
// return null;
// }
// if (($valueLength = strlen($value)) > 1 && $value[0] === '"' && $value[$valueLength - 1] === '"') {
// return substr($value, 1, -1);
// }
// return $value;
//}

Loading…
Cancel
Save