| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace app\api\middleware;
- use app\Request;
- use interfaces\MiddlewareInterface;
- use think\cache\driver\Redis;
- use think\facade\Config;
- use think\Response;
- class AuthSignMiddleWare implements MiddlewareInterface
- {
- /*
- * 允许跨域的域名
- */
- protected $cookieDomain;
- public function handle(Request $request, \Closure $next)
- {
- $this->cookieDomain = Config::get('cookie.domain', '');
- $header = Config::get('cookie.header');
- $origin = $request->header('origin');
- if ($origin && ('' == $this->cookieDomain || strpos($origin, $this->cookieDomain)))
- $header['Access-Control-Allow-Origin'] = $origin;
- if ($request->method(true) == 'OPTIONS') {
- $response = Response::create('ok')->code(200)->header($header);
- }
- if (env('APP.WEB_IS_UPDATE')){
- $testIp = env('APP.TEST_IPS');
- $testIps = $testIp? $testIp : '';
- $currentIp = get_client_ip();
-
- if($testIps && !preg_match("/{$currentIp}/", $testIps)){
- return api_error_return(['msg'=>'网站正在升级中', 'data'=>['ips'=> $testIps,'ip'=> $currentIp]]);
- }
- }
- $redis = new Redis();
- if ($redis->get('is_update_data')){
- return api_error_return(['msg'=>'更新数据中,请稍后几秒', 'data'=>null]);
- }
- if (env('API.IS_PUBLIC_REQUEST_VERIFY')){
- if (ISNOTREQUESTPASS($request->param())){
- return api_error_return(['msg'=>'参数错误', 'data'=>null]);
- }
- }
- if (env('API.IS_SIGN_VERIFY')){
- if (empty($request->param('sign'))){
- return api_error_return(['msg'=>'签名不存在', 'data'=>null]);
- }
- $sign = createApiSign($request->param());
- if ($request->param('sign') != $sign){
- // return api_error_return(['msg'=>'签名错误', 'data'=>['aa'=>AESjiemi($request->password)]]);
- return api_error_return(['msg'=>'签名错误', 'data'=>['aa'=>$sign]]);
- // return api_error_return(['msg'=>'签名错误', 'data'=>null]);
- }
- if (time() - $request->post('timestamp') > 20){
- return api_error_return(['msg'=>'请求失败,稍后再试', 'data'=>null]);
- }
- }
- return $next($request);
- }
- }
|