首页 > 解决方案 > Laravel $middlewareGroups 排除非身份验证路由

问题描述

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

不是为每个非身份验证路由构建一个“覆盖范围”的开关案例,而是对路由进行开箱即用的排除$middlewareGroups吗?

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

谢谢

标签: laravelauthenticationmiddleware

解决方案


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

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

这是我的温度。我做了黑客攻击:

 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);

}

推荐阅读