首页 > 解决方案 > Laravel 5.6 中多重身份验证的路由问题

问题描述

我试图在同一个 Laravel 应用程序上同时拥有我的前端和后端。基本上,如果您将 /admin 附加到 URL,您将可以访问后端。我的后端控制器有一个后端文件夹,前端控制器有一个前端文件夹。在它们每个内部,我都复制了完整的 Auth 控制器并相应地更改了命名空间和视图。

来自后端的身份验证完美运行。但是从前端,“登录”路由转到后端登录,这不应该发生。

我的 web.php 文件:

Route::get('/', function () {
    return view('front.auth.login');
})->name('site_home');


Auth::routes();
Route::group(['middleware' => ['auth']], function () {
    Route::get('/', 'HomeController@index')->name('site_home');
});

我为后端路由创建的另一个文件(称为 backend.php)

Auth::routes();

Route::post('password/reset', 'Auth\ResetPasswordController@reset');

Route::group(['middleware' => ['auth', 'is_admin']], function () {
    Route::get('/', 'AdminController@index')->name('home');
});

最后在 RouteServiceProvide.php 我有这个功能来映射路线:

protected function mapWebRoutes()
{
    Route::middleware('web')
         ->namespace('App\Http\Controllers\Front')
         ->group(base_path('routes/web.php'));

    Route::middleware('web')
        ->namespace('App\Http\Controllers\Back')
        ->prefix('admin')
        ->group(base_path('routes/backend.php'));
}

我猜身份验证路由之间存在一些冲突,所以我的第一个想法是两个路由文件都已加载,我希望只加载其中一个,具体取决于上下文(在 URL 中是否有管理员)。我尝试了几种基于多身份验证问题的解决方案,但它们无助于解决我的问题,有时会使管理员路由变成管理员/管理员。

我已经使用了一点 Laravel,但对我来说这有点偏离常规。任何帮助表示赞赏。

标签: phplaravel

解决方案


推荐阅读