Browse Source

使用middleware实现修改参数,request有重复调用情况

master
Mike 6 years ago
parent
commit
4701170212
  1. 29
      app/Middleware/CorsMiddleware.php
  2. 2
      config/autoload/dependencies.php

29
app/Middleware/CorsMiddleware.php

@ -29,6 +29,35 @@ class CorsMiddleware implements MiddlewareInterface
return $response;
}
$request = \Hyperf\Utils\Context::override(ServerRequestInterface::class, function (ServerRequestInterface $request)
{
$preDatas = $request->getParsedBody();
if(isset($preDatas['market_id'])){
if($preDatas['market_id']==-1){
$preDatas['market_id'] = 0;
if (env('APP_ENV') == 'prod') {
unset($preDatas['sign']);
$sign = $this->signature($preDatas);
$preDatas['sign'] = $sign;
}
}
}
return $request->withParsedBody($preDatas);
});
return $handler->handle($request);
}
private function signature($params)
{
ksort($params);
$http_query = [];
foreach ($params as $key => $value) {
$http_query[] = $key.'='.$value;
}
return sha1(md5(implode('&', $http_query)).config('auth.api.sign.secret_key'));
}
}

2
config/autoload/dependencies.php

@ -11,7 +11,7 @@ declare(strict_types=1);
*/
return [
\Hyperf\HttpServer\Contract\RequestInterface::class => \App\Commons\LanzuRequest::class,
// \Hyperf\HttpServer\Contract\RequestInterface::class => \App\Commons\LanzuRequest::class,
\App\Service\ServiceEvaluateServiceInterface::class => \App\Service\ServiceEvaluateService::class,
\App\Service\AttachmentServiceInterface::class => \App\Service\AttachmentService::class,
\App\Service\ParamsTokenServiceInterface::class => \App\Service\ParamsTokenSsdbService::class,

Loading…
Cancel
Save