php - 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,但对我来说这有点偏离常规。任何帮助表示赞赏。
解决方案
推荐阅读
- asp.net-mvc - 在 AspNetRoles 表标识中添加新角色
- javascript - 如何使用功能组件更新 Redux 状态?
- javascript - 没有任何解决方案可以从 Chrome 运行 Node.JS 代码吗?
- spring-boot - Spring Boot 推送通知
- javascript - Redux:为什么 store.getState() 与 useSelector 返回不同的值?
- excel - VBA AES CBC 加密
- r - 为什么 return(pval) 给出标准。结果是错误而不是p值?
- swiftui - 如何在 SwiftUI 应用中保存和加载 ARWorldMap?
- java - 如何使用默认方法返回功能接口的逆接口
- angular - 来自子域 A 的 Cookie 未发送到子域 B