我想实现一个系统,其中有6种用户存在。其中一个是 "客户",他将通过类似于以下的途径登录 /login
其余5个用户都是管理员,只有他们会用另一个途径登录。/system/base-admin
. 但是,'客户'从来没有用 /system/base-admin
路径,如果能知道这个路由。而且两个路由有不同的登录形式,如果他们登录失败,'customer'将被重定向到 /login
和管理员 /system/base-admin
.
我知道$guard和中间件检查。
问题:我知道$guard和中间件检查。 我如何实现上述方案和如何反应专业人士与这种情况?
Route::get('/login','CustomerLoginController@processLogin')->name('customer.login');
Route::get('/system/base-admin', 'AdminLoginController@processAdminLogin')->name('system.admin')
我的控制器看起来像
public function processLogin(){ return view('customer.login');}
public function processAdminLogin(){ return view('admin.login')}
先谢谢你。
我看到有不同的端点登录的唯一原因是有不同的视图。Auth\LoginController
变化 $redirectTo
重定向到您的管理面板。覆盖 AuthenticatesUsers\showLoginForm
以显示您的管理表单和更新中间件,在 __construct
.用管理中间件保护你所有的管理路由。
现在,。你的用户可以登录到你的面板。但是什么都不会发生,因为他们没有权限。
如果你想在他们尝试的时候给他们看一些信息,你可以重写以下内容 AuthenticatesUsers\login
这样的方法
...
if ($this->attemptLogin($request)) {
if(!auth()->user()->isAdmin()){
throw ValidationException::withMessages([
$this->username() => 'You don\'t have access to this page',
]);
}
return $this->sendLoginResponse($request);
}
...