0

因此,在我的 laravel 项目中,我有 3 个角色管理员员工供应商,每个角色都有控制器在控制器中我已经放置了角色的中间件,它可以正常工作,但是当用户没有角色时,我不喜欢它给出 HttpException 错误我如何改变而不是给用户 HttpException 将他重定向回或 404 not found 页面继承我的控制器

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

2 回答 2

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 的检查并从那里重定向。

于 2018-01-27T12:08:11.347 回答
1

任何对异常处理的小定制都可以在 App\Exceptions\Handler 的 render() 函数中完成。在这种情况下,您可能会在该渲染函数中执行类似的操作。

//change all 403's to 404's
if($exception->getCode() == 403){
    throw new NotFoundHttpException();
}
于 2018-01-27T13:28:14.637 回答