创建重定向和响应错误

时间:2016-12-08 18:43:10

标签: php laravel laravel-5.2

我管理一些人的授权,其中一个我希望给出403并重定向用户但是没有工作,没有重定向到仪表板

我的示例代码是:

 protected function unauthorized()
    {
         abort(403, 'Unauthorized action.');
         return redirect('/dashboard');
    }

1 个答案:

答案 0 :(得分:2)

Laravel中的abort()方法会引发app()->abort()调用,根据您提供的代码,会调出\Exception

public function abort($code, $message = '', array $headers = [])
{
    if ($code == 404) {
        throw new NotFoundHttpException($message);
    }

    throw new HttpException($code, $message, null, $headers);
}

您可以在App\Exceptions\Handler.php文件中使用此例外:

public function render($request, Exception $e)
{
     if ($e instanceof HttpException ) {
         return redirect('/dashboard')->withErrors([
              'message' => 'You are not allowed to access that portion of the site.'
         ]);
     }
}

当然,您可能需要在条件中添加更多逻辑,以检查实际授权用户等内容。对于未经授权的用户,您可能希望将其重定向到登录页面。您可以使用简单的if (auth()->check()) { }else { }来观察它。