Laravel重定向异常不起作用

时间:2018-05-28 14:00:06

标签: php laravel

我有问题,我无法重定向此例外:

This action is unauthorized.

在处理程序中我有:

use Illuminate\Auth\AuthenticationException;
...

public function render($request, Exception $exception)
{
    if ($exception instanceof AuthenticationException) {
        return redirect()->to('/');
    }

    return parent::render($request, $exception);
}

但条件总是返回假..为什么?

我在调试中收到消息:

protected function prepareException(Exception $e)
{
    if ($e instanceof ModelNotFoundException) {
        $e = new NotFoundHttpException($e->getMessage(), $e);
    **} elseif ($e instanceof AuthorizationException) {
        $e = new AccessDeniedHttpException($e->getMessage(), $e);**
    } elseif ($e instanceof TokenMismatchException) {
        $e = new HttpException(419, $e->getMessage(), $e);
    }

    return $e;
}

我试着和AccessDeniedHttpException。不工作......

1 个答案:

答案 0 :(得分:1)

例外:

  

此操作未经授权。

Illuminate\Auth\Access\AuthorizationException;

引起

因此,您的功能应该是这样的:

use Illuminate\Auth\Access\AuthorizationException;
...

public function render($request, Exception $exception)
{
    if ($exception instanceof AuthorizationException) {
        return redirect()->to('/');
    }

    return parent::render($request, $exception);
}

您当前使用的那个(Illuminate\Auth\AuthenticationException)用于身份验证。