我正在接收来自新前端的请求,该请求会对所有发布参数进行加密
前一个前端未加密发布参数
但是当前后端也不会解密收到的post参数
如何更改收到的整个请求,以便在调用
$request->get('param_name');
这样当param_name的值进入要使用的变量时,它已经被解密了
因为将整个后端1修改为1实在是效率低下
我曾经修改过trans()函数,只需转到处理它的文件并对其进行修改
但应要求
什么是文件?
答案 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)...