2016-03-04 5 views
0

Я разрабатываю приложение, которое имеет два типа пользователей, пользователей и администраторов на laravel 5.2. Моя проблема заключается в том, что autenticacion никогда не бывает успешным.Multi auth laravel 5.2, autentication not working

Я изменил конфигурации/авторизацию на:

return [ 

'defaults' => [ 
    'guard' => 'user', 
    'passwords' => 'user', 
], 

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

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
    ], 
    'admins' => [ 
     'driver' => 'eloquent', 
     'model' => App\Admin::class, 
    ], 
], 

'passwords' => [ 
    'user' => [ 
     'provider' => 'users', 
     'email' => 'auth.emails.password', 
     'table' => 'password_resets', 
     'expire' => 60, 
    ], 
    'admin' => [ 
     'provider' => 'admins', 
     'username' => 'auth.username.password', 
     'table' => 'password_resets', 
     'expire' => 60, 
    ], 
], 

];

Модель администратора (Модель пользователя одинакова для таблицы 'пользователей' за исключением):

namespace App; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class Admin extends Authenticatable 
{ 
    public $timestamps = False; 
    protected $table = 'admins'; 
    protected $fillable = [ 
     'name', 'username', 'password', 
    ]; 

    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

контроллер администратора:

public function auth(Request $request) { 
    $credentials = $request->except('_token'); // "username" => "ewfer" "password" => "fwerfwegf" 

    if(!Auth::guard('admin')->attempt($credentials)) { // always enters here, even with the right details 
     Session::flash('flash_error', 'Something went wrong with your login'); 
     return redirect(url('/admin/login')); 
    } 
    return redirect('/admin'); 
} 

По умолчанию моего стола администраторов:

Schema::create('admins', function (Blueprint $table) { 
     $table->increments('username'); 
     $table->string('password'); 
     $table->rememberToken(); 
    }); 
DB::table('admins')->insert([ 
     'username' => 'miguel', 
     'password' => Hash::make('password'), 
    ]); 

Обратите внимание, что для входа в систему администратора нам нужно имя пользователя, а не адрес электронной почты, который используется для входа в систему.

ответ

0

Ну, я обнаружил проблему, это было очень глупо, сожалею об этом. Проблема была в этой строке $table->increments('username');, и я не заметил, что хранилось в BD, это был int (1) вместо «miguel». Кроме того, все отлично работало