我的网站客户和管理员有2位警卫。出于某种原因,当我登录admin并尝试使用我从admin登录的客户帐户登录时。刷新客户登录表单后,我可以没有任何问题地登录。
这是我的守卫:
'guards' => [
'customer' => [
'driver' => 'session',
'provider' => 'customers',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
和提供者:
'providers' => [
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'customers' => [
'driver' => 'eloquent',
'model' => App\Customer::class,
],
],
路线:
//for admins
$this->get('/login', 'Http\Controllers\Auth\LoginController@showLoginForm')->name('adminLogin');
$this->post('/login', 'Http\Controllers\Auth\LoginController@login');
$this->post('/logout', 'Http\Controllers\Auth\LoginController@logout')->name('logout');
//for customers
Route::get('/acc/login', 'AccountController@loginForm')->name('customerLoginForm');
Route::post('/acc/login', 'AccountController@login')->name('customerLogin');
管理员使用默认的laravel auth文件,客户使用如下登录方法定制控制器:
public function login(Request $request)
{
$rules = [
'customer_email' => 'required|email',
'customer_password' => 'required|string',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return redirect()->route('customerLoginForm')
->withErrors($validator);
} else {
if (Auth::guard('customer')->attempt(['email' => $request->customer_email, 'password' => $request->customer_password])) {
return redirect()->route('accountMyOrders');
} else {
return redirect()->back()->withInput($request->only('customer_email'))->withErrors('Wrong login/email!');
}
}
}
总而言之,登录名和密码与db中的数据匹配,但是以某种方式无法同时登录两个帐户。在laravel上是不可能的,还是代码中存在一些错误?
非常感谢您的帮助!