Как изменить все запросы в laravel - PullRequest
0 голосов
/ 08 июня 2019

Я получаю запросы от нового внешнего интерфейса, которые шифруют все параметры сообщения
предыдущий интерфейс не зашифровал параметры записи
однако текущий бэкэнд также не расшифровывает полученные параметры записи

как мне изменить весь полученный запрос, чтобы я мог поставить расшифровку первым при вызове

$request->get('param_name');


так что когда значение param_name попадает в переменные, которые будут использоваться, оно уже расшифровано
потому что изменение всего бэкэнда 1 на 1 действительно неэффективно

я когда-либо изменял функцию trans (), просто зайди в файл, который его обрабатывает, и измени его
но по запросу
что это за файл?

Ответы [ 2 ]

3 голосов
/ 08 июня 2019

Вы можете использовать промежуточное ПО.

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 в соответствующих декларациях промежуточного ПО для маршрута.

0 голосов
/ 08 июня 2019

Вам нужно создать связующее ПО для ваших действий.

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)...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...