问题描述
我正在使用 spatie/laravel-permission
,当未经授权的用户查看私人页面时,laravel 显示 403 错误,但我希望 laravel
将他们重定向到 login page
,并在登录后自动重定向到私人页面。
例如,未经授权的用户想要转到 /admin。我想在成功登录后将他重定向到 /login 页面,将他重定向到 /admin。
Laravel 版本:5.7
解决方法
根据 spatie/laravel-permission
文档,您可以看到它抛出了一些您可以在代码中处理的特定异常。在这里你可以找到所有的例外。 link
因此根据您的问题,您需要处理 UnauthorizedException
在您的 app/Exceptions/Handler
中添加此代码:
public function register()
{
$this->renderable(function (\Spatie\Permission\Exceptions\UnauthorizedException $e,$request) {
return response()->json([
'responseMessage' => 'You do not have the required authorization.','responseStatus' => 403,]);
});
}
这将返回一个 JSON 响应,如果您想将用户返回到登录页面,您可以将其更改为:
return redirect()->route('login');