为什么中间件总是触发?

Why does middleware always fires?

登录后,我的应用程序总是按预期转到仪表板。

但即使点击其他目录后,它也总是转到仪表板。

据我所知,名为 RedirectIfAdmin 的中间件总是会触发。

我正在使用 hesto/multi-auth

RedirectIfAdmin:

public function handle($request, Closure $next, $guard = 'admin')
{
   if (Auth::guard($guard)->check()) {
      return redirect('myapp/dashboard');
   }

   return $next($request);
}

在我的管理路径文件中:

Route::group(['prefix' => '/myapp', 'as'=>'myapp.'], function () {
  Route::resources([
    'user' => '\App\Http\Controllers\UserController'
    ]);
});

因此,如果我转到 myapp/user/,我总是会被重定向到 myapp/dashboard

我知道当我转到 myapp/user 时触发的是 RedirectIfAdmin 中的代码,因为如果我将它更改为 myapp/dashboard123 然后它会转到 url 每次浏览 myapp/usermyapp/user/createmyapp/user/123myapp/user/123/edit

有什么想法吗?

检查用户控制器上的__construct(),看看你是否在那里引用了它

在调用您的 myapp/user/ 时尝试用

调用它
project-url/admin/myapp/user

如果您使用路由呼叫,则使用 like

admin.myapp.user

第 1 步:

在你的RouteServiceProvider.php

里面

在地图函数里面添加这一行:

$this->mapWebRoutes();
$this->mapAdminRoutes();

第 2 步:

在 RouteServiceProvider 内部 class 添加此函数:

protected function mapAdminRoutes()
    {
        Route::group([
            'middleware' => ['web', 'admin', 'auth:admin'],
            'prefix' => 'admin',
            'as' => 'admin.',
            'namespace' => $this->namespace,
        ], function ($router) {
            require base_path('routes/admin.php');
        });
    }


protected function mapWebRoutes()
    {
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));
    }

第 3 步: 运行 在您的项目中使用下面的命令

php artisan optimize:clear