Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.04.2015 13:38:49

TokenMismatchException при истечении сессии

Здравствуйте.
Есть проблемка:
при истечении сессии бросается исключение TokenMismatchException ( in VerifyCsrfToken.php line 46 )
Как-то не очень красиво. На продакшене, конечно, ошибки показываться не будут, но будет белый экран.
Не плохо бы автоматом сессию обновить, или хотя-бы вывести соответствующее сообщение.
Только как эту ошибку перехватить?

Оригинальный VerifyCsrfToken

PHP
    public function handle($requestClosure $next)
    {
        if (
$this->isReading($request) || $this->tokensMatch($request))
        {
            return 
$this->addCookieToResponse($request$next($request));
        }

        throw new 
TokenMismatchException;
    }

Наследуемый

PHP
    public function handle($requestClosure $next)
    {
        return 
parent::handle($request$next);
    }

Пробую так (в наследуемом)

PHP
   public function handle($requestClosure $next)
   {
    try{
              return 
parent::handle($request$next);
        }catch(
TokenMismatchException $e){
              return 
'Сессия истекла';
        }
   }

Не получается.
Возможно есть какое-то другое решение?

Не в сети

#2 09.04.2015 14:05:12

Re: TokenMismatchException при истечении сессии

по-моему его не надо перехватывать, надо просто в App\Exceptions\Handler отслеживать именно этот эксепшен и рендерить правильный вид с нужным сообщением. или делать редирект на авторизацию если пользователь уже всё, того.

Не в сети

#3 09.04.2015 16:26:22

Re: TokenMismatchException при истечении сессии

Чет не перехватывается:

PHP
public function report(Exception $e)
{

    if (
$e instanceof TokenMismatchException){
        return 
'Сессия устарела';
    }

    return 
parent::report($e);
}

Не в сети

Подвал раздела