我创建了一个中间件组,但我想排除所有非身份验证路由,例如:
而不是建立一个'到达'对于每个非身份验证路由的交换机案例,$middlewareGroups
上的路由是否有开箱即用的排除?
我需要使用$ middlewareGroups,而不是$ routeMiddleware。
谢谢
答案 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);
}