Laravel 5.5 组中间件给你重定向太多次

gam*_*ofe 2 php laravel-middleware laravel-5.5

我正在尝试为路由组编写一个中间件,以仅允许用户使用is_adminbe 1,但是当我访问路由时,用户为 admin ,错误消息显示:

此页面无效

localhost 将您重定向了太多次。

这是我的中间件:

public function handle($request, Closure $next)
{
  if ($request->user()->is_admin === 1) {
    return redirect('/cms');
  }

  return redirect('/contacts');
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个“CMS”键$middlewareGroups位于Kernel.php

'cms' => [
    \App\Http\Middleware\AdminMiddleware::class,
]
Run Code Online (Sandbox Code Playgroud)

并将其分配给我的路由组:

Route::group(['middleware' => 'cms'], function() {
  Route::get('/cms', 'CmsController@index')->name('cms');
});
Run Code Online (Sandbox Code Playgroud)

访问/contacts正常,但是访问/cms会导致上面的错误。

小智 6

发生的事情是这样的:您的路由将您定向到中间件。在发现用户确实是管理员后,您使用重定向。由于此重定向是通过 url 进行的,因此它将使用再次使用中间件的路由。实际上,您已经创建了一个无限循环。我假设您想要做的是简单地继续检查后路线指向的内容,如下所示:

return $next($request);
Run Code Online (Sandbox Code Playgroud)