AuthManager.php中的Laravel 5.2多表认证ErrorException

时间:2016-03-31 18:43:10

标签: laravel authentication laravel-5.2

我使用Laravel 5.2,我需要使用多表身份验证。我从这个链接Can anyone explain Laravel 5.2 Multi Auth with example

中读到了

我修改了config / auth.php

'guards' => [
    'user' =>[
        'driver' => 'session',
        'provider' => 'user',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admin',
    ],
],  

//User Providers
'providers' => [
    'user' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admin' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ]
],  

//Resetting Password  
'passwords' => [
    'user' => [
        'provider' => 'user',
        'email' => 'auth.emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
    'admin' => [
        'provider' => 'admin',
        'email' => 'auth.emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
], 

以下是登录控制器的一部分(后方法)

$admindata = array(
    'email'     => Input::get('email'),
    'password'  => Input::get('password')
);

if (Auth::attempt($admindata)) {
    echo 'SUCCESS!';
} else {
    $admin = Auth::admin();
    return Redirect::to('/b');
}

但是我收到了这个错误

  

AuthManager.php第288行中的ErrorException:call_user_func_array()   期望参数1是有效的回调类   'Illuminate \ Auth \ SessionGuard'没有方法'admin'

看起来错误在Auth::attempt()上。如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

我认为错误不在attempt方法中,而在于:

 $admin = Auth::admin();

您尝试在此运行admin方法,显然Illuminate\Auth\SessionGuard类中没有此类方法。