我管理一些人的授权,其中一个我希望给出403并重定向用户但是没有工作,没有重定向到仪表板
我的示例代码是:
protected function unauthorized()
{
abort(403, 'Unauthorized action.');
return redirect('/dashboard');
}
答案 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 { }
来观察它。