角色Zizaco上的中间件/托管控制器,但如果用户没有角色则会给出HttpException

时间:2018-01-27 11:37:53

标签: php laravel middleware roles entrust

所以在我的laravel项目中,我有3个角色管理员工供应商,每个人都有控制器中的控制器我已经把它的角色的中间件,它没有问题,但我不喜欢用户没有的东西它给HttpException错误的角色如何更改而不是给用户HttpException重定向他或404找不到页面继承人我的控制器

public function __construct()
{
    $this->middleware('auth');
    $this->middleware('role:employee');
}

2 个答案:

答案 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();
}