Laravel $ middlewareGroups排除非auth路由

时间:2018-05-23 10:52:02

标签: laravel authentication middleware

我创建了一个中间件组,但我想排除所有非身份验证路由,例如:

  • /注册
  • /登录
  • /

而不是建立一个'到达'对于每个非身份验证路由的交换机案例,$middlewareGroups上的路由是否有开箱即用的排除?

  

我需要使用$ middlewareGroups,而不是$ routeMiddleware。

谢谢

2 个答案:

答案 0 :(得分:0)

没有好办法从Laravel的中间件组中排除路由,所以我们能做的最好的事情就是创建两个独立的中间件组

答案 1 :(得分:0)

好吧,我会继续回答我自己的问题,但如果有人拿起手套,或者Taylor Otwell回答:P

,我会自由地改为更简洁/ Laravel的答案。

回顾一下,如果您在$middlewareGroups下构建中间件,您将在所有路由上应用中间件,我将其用于角色/权限基础系统,但没有人需要特定页面的权限(它直接腐蚀到非Auth页面)所以我正在寻找一个简单的一行排除。

这是我的临时工。哈克我做了:

 public function handle($request, Closure $next)
    {
        $response = $next($request);
        $nonAuth = $request->getPathInfo();

        switch ($nonAuth) {
            case "/":
                return $response;
            case "/register":
                return $response;
            case "/login":
                return $response;
            case "/logout":
                return $response;
            case "/home":
                return $response;
        }
// continue with regular Auth operations and so on and so forth
//for what you need out of this middleware.

        $userId = Auth::id();
        $user = User::findOrFail($userId);

}