多个中间件无法按需工作

时间:2018-08-18 15:26:05

标签: laravel routes middleware laravel-5.6 laravel-middleware

如果我有3个用户角色(主管,管理员和主持人):

我想允许所有方法,大多数方法由管理员,一种方法的主持人。

Inside InstitutionsController:

public function __construct() {
    $this->middleware('head');
    $this->middleware('admin')->only(['index', 'create']);
    $this->middleware('moderator')->only(['index']);
}

通过这种方式,我不能以主持人或管理员的身份打开访问索引方法,就像头...

我该如何实现?

顺便说一句,我的中间件有:return !auth()->user()->isAdmin()?redirect()->home():$next($request)等,另外2个

1 个答案:

答案 0 :(得分:0)

您需要阅读middleware。它们是操纵HTTP请求和响应的类。请求进入,响应出现。一次处理一次。因此,如果您有一个检查角色的中间件,则它将检查该角色并在用户不具有该角色的情况下抛出“未经授权”的响应。

这样,检查用户是否可以做某事并不是中间件的工作(如您所见)。如果要检查用户是否可以做某事,请改为在资源周围使用policy

Authorization文档提供了有关在Laravel应用程序中创建策略和授权操作的更多信息。