如何更改Laravel中的所有请求

时间:2019-06-08 06:54:34

标签: laravel

我正在接收来自新前端的请求,该请求会对所有发布参数进行加密
前一个前端未加密发布参数
但是当前后端也不会解密收到的post参数

如何更改收到的整个请求,以便在调用

时可以将解密放在首位
$request->get('param_name');


这样当param_name的值进入要使用的变量时,它已经被解密了
因为将整个后端1修改为1实在是效率低下

我曾经修改过trans()函数,只需转到处理它的文件并对其进行修改
但应要求
什么是文件?

2 个答案:

答案 0 :(得分:3)

您可以使用中间件。

php artisan make:middleware RequestInterceptorMiddleware

然后在handle方法中,您可以询问request并执行.merge()

if($request->has('param_name')) {
    $request->merge(['param_name' => decrypt($request->get('param_name'))]);
}

return $next($request);

然后确保在相应的路由中间件声明中将该中间件添加到Kernel.php中。

答案 1 :(得分:0)

您需要为操作创建中间件。

php artisan make:middleware RequestDecryptMiddleware

在Kernel.php中添加:

<?php

// Kernel.php

protected $routeMiddleware = [
...
'decrypt' => \App\Http\Middleware\RequestDecryptMiddleware::class,
...
];

之后,您可以覆盖中间件中的参数:

public function handle($request, Closure $next)
    {
      if($request->has('encrypt_param')){
        $request->merge(['encrypt_param' => decrypt_function($request->get('encrypt_param'))]);
      }
      return $next($request);
    }

然后在您的控制器中使用它:

public function myAction(RequestDecryptMiddleware $request)...