如何跳过另一个中间件的所有中间件?

时间:2016-11-02 15:31:58

标签: laravel

拥有一堆路由并拥有简单的权限系统,因此如果管理员提出请求他/她可以在没有任何其他条件的情况下访问任何路由,那么我会检查用户是否是管理员,如果是,我和#39; ll跳过所有下一个中间件:

class IsAdmin
{
    public function handle($request, Closure $next)
    {
        if (\Auth::user() && (\Auth::user()->group->name == 'admin')) {
            // skip next middlewares and give access for the route to the user
        }

        return $next($request);
    }
}

只有skip部分存在问题,有没有办法这样做?

1 个答案:

答案 0 :(得分:0)

另一种解决方案是将其添加到控制器构造函数中。

public function __construct()
{
    if (\Auth::user() && (\Auth::user()->group->name == 'admin')) {
        $this->middleware('auth', ['except' => ['yourControllerMethod', 'anotherControllerMethod']]);
    }
}