Laravel Spatie 权限不会将未经授权的用户重定向到登录页面

问题描述

我正在使用 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');

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...