Обработчик не улавливает исключение авторизации и несоответствия токенов. Laravel

Некоторое время я пытался обработать исключение, созданное laravel. Я много чего пробовал, но похоже, что это не работает. Вот мой синтаксис, который я использовал:

public function render($request, Exception $e)
{
    //404 page when a model is not found
    if ($e instanceof ModelNotFoundException) {
        return response()->view('errors.404', [], 404);
    }elseif ($e instanceof \AuthorizationException) {
        return response()->view('errors.403', [], 403);
    }elseif ($e instanceof TokenMismatchException) {
        Flash::error('Sorry, your session seems to have expired. Please try again.');
        return redirect('/');
    }elseif ($e instanceof \ErrorException) {
        return response()->view('errors.500', [], 500);
    }else {
        return response()->view('errors.500', [], 500);
    }
    // return parent::render($request, $e);
}

Я включил следующее:

use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Session\TokenMismatchException;
use Illuminate\Validation\ValidationException;
use Symfony\Component\HttpKernel\Exception\HttpException;

Далее, ранее было добавлено следующее:

protected $dontReport = [
    AuthorizationException::class,
    HttpException::class,
    ModelNotFoundException::class,
    ValidationException::class,
    TokenMismatchException::class,
];

Кто-нибудь может мне с этим помочь? Я застрял в этом несколько дней. Любая помощь будет оценена по достоинству.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
0
552
1

Ответы 1

Причина в том, что эти исключения исключены структурой и поэтому не сообщаются. Для справки см. здесь.

Поскольку свойство, определяющее исключенные исключения, - это protected, вы должны иметь возможность переопределить его в своем файле app/Exceptions/Handler.php. Вы не должны удалять все эти исключения, а только те, которые вы действительно хотите поймать. Так что просто добавьте следующие строки в ваш Handler.php:

/**
 * A list of the internal exception types that should not be reported.
 *
 * @var array
 */
protected $internalDontReport = [
    AuthenticationException::class,
    HttpException::class,
    HttpResponseException::class,
    ModelNotFoundException::class,
    ValidationException::class,
];

Вам также нужно будет добавить операторы use для всех классов.

(Имейте в виду, что это список исключенных исключений для Laravel 5.6 - если вы используете другую версию, вам, возможно, придется использовать git blame или другую ветку, чтобы найти правильный список для вашей версии.)

Другие вопросы по теме