Как обработать ‘throw new DecryptException(‘Недопустимая полезная нагрузка.’)’ в Laravel

#laravel

#ларавель #laravel

Вопрос:

У меня есть небольшой проект Laravel, работающий над классом Crypt. Это отлично работает как для Crypt::encrypt (..), так и для Crypt::decrypt (..). Но у меня возникает проблема, если я напрямую изменяю зашифрованное значение, а затем пытаюсь захватить исключение. Например, мое зашифрованное значение равно

 zczc1234j5j3jh38234wsdfsdf214
  

Затем я непосредственно добавляю несколько слов, как показано ниже.

 zczc1234j5j3jh38234wsdfsdf214_addsometext
  

Я пытаюсь расшифровать и получаю ошибку, как показано ниже

 throw new DecryptException('The payload is invalid.')
  

Итак, я пытаюсь захватить исключение с помощью метода рендеринга.

 public function render($request, Exception $exception)
{
    if ($exception instanceof IlluminateContractsEncryptionDecryptException) {
        dd("error");
        return route('login')->withError('Your DB may be hacked');
    }
    return parent::render($request, $exception);
}
  

Я не знаю, почему метод не срабатывает, оценил и спасибо за все комментарии.

Комментарии:

1. У меня такая же проблема, куда вы помещаете этот метод рендеринга?

Ответ №1:

Вы должны справиться с этим с

 use IlluminateContractsEncryptionDecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}
  

проверить https://laravel.com/docs/5.8/encryption

Комментарии:

1. Привет, Раджат Шарма, спасибо.

2. Наконец-то! Простой и лаконичный