使用第二个后卫登录会导致两个Laravel都注销

时间:2019-04-18 14:03:41

标签: php laravel

我的网站客户和管理员有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上是不可能的,还是代码中存在一些错误?

非常感谢您的帮助!

0 个答案:

没有答案