所以在我的laravel项目中,我有3个角色管理员工供应商,每个人都有控制器中的控制器我已经把它的角色的中间件,它没有问题,但我不喜欢用户没有的东西它给HttpException错误的角色如何更改而不是给用户HttpException重定向他或404找不到页面继承人我的控制器
public function __construct()
{
$this->middleware('auth');
$this->middleware('role:employee');
}
答案 0 :(得分:2)
在角色检查发生之前,您可以检查用户是否在闭包中间件中有任何角色,如
// your controller
public function __construct()
{
$this->middleware('auth');
$this->middleware(function ($request, $next) {
return !auth()->user()->role ? redirect->back() : $request($next);
});
$this->middleware('role:employee');
}
或者在异常处理程序类中添加对HttpException的检查,并从那里重定向。
答案 1 :(得分:1)
任何针对异常处理的小型自定义都可以在App \ Exceptions \ Handler的render()函数中完成。在这种情况下,您可以在渲染函数中执行类似的操作。
//change all 403's to 404's
if($exception->getCode() == 403){
throw new NotFoundHttpException();
}