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)