Почему метод Auth :: try всегда возвращает false?

Я пытаюсь выполнить базовую проверку подлинности и когда пытаюсь выполнить аутентификацию пользователя, но метод Auth :: attempt try возвращает false

лопасть

  {{ Form::open(array('url' => 'usuario')) }} <input type="text" class="text" id="email" name="email" placeholder="Correo" {{(Input::old('email')) ? 'value ="'. Input::old('email').'"' : '' }}> <p>{{ $errors->first('email') }}</p> <input type="text" class="text" id="password" name="password" placeholder="Contraseña" > <p>{{ $errors->first('password') }}</p> {{ Form::submit('Ingresar', array('class' => 'bg1')) }} {{ Form::close() }} 

контроллер

 class UsuarioController extends BaseController{ public function doLogin(){ $rules = array( 'email' => 'required|email', 'password' => 'required' ); $validator = Validator::make(Input::all(), $rules); if($validator->fails()){ return Redirect::to('usuario')->withErrors($validator)->withInput(Input::except('password')); }else{ $userdata = array( 'email' => Input::get('email'), 'password' => Input::get('password') ); if(Auth::attempt($userdata)){ return View::make('hello'); }else{ return Redirect::to('usuario'); } } } } 

Auth

 'driver' => 'database', 'model' => 'Usuario', 'table' => 'Usuario', 

Модель

 use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableInterface; class Usuario extends Eloquent implements UserInterface, RemindableInterface{ protected $table = 'Usuario'; protected $primaryKey = 'idUsuario'; protected $hidden = array('Contrasena'); protected $fillable = array( 'Nombre', 'Apellido', 'Tipo', 'password', 'email', 'Fono', 'Foto' ); } 

Код всегда возвращает false и перенаправляет меня на вход в систему, используя неверные данные, когда база данных

Есть много причин, которые могут заставить его возвращать false каждый раз:

1) Ваш пароль неправильно сохранен / хеширован, вы должны сделать его с помощью:

 Hash::make($password); 

Это способ создания пользователей и хранения правильных хэшей паролей от Laravel:

 $user = new User; $user->email = 'example@domain.com'; $user->password = Hash::make('thePasswordToBeHashed'); $user->save(); 

2) Размер столбца в вашем пароле не достаточен для хранения хешированного пароля. Он должен иметь длину не менее 60 байт, но с его помощью:

 $table->string('password'); 

Является хорошей практикой, потому что, если этот размер как-то изменится в будущем, у вас не будет проблем.

3) У вас нет пользователя с адресом электронной почты (Correo), который вы пытаетесь войти в систему. Дважды проверьте это, потому что это происходит чаще, чем мы думаем. И вы также можете попытаться сделать это вручную, чтобы увидеть, действительно ли это работает:

 $userdata = array( 'Correo' => 'youremail@domain.com', 'Password' => 'password' ); dd( Auth::attempt($userdata) ); 

4) Данные не будут правильно переданы вашей формой, проверьте, действительно ли ваша форма работает, путем ее смерти:

 dd(Input::all()); 

И проверьте, получили ли вы правильные данные.

5) У вас есть валидация, поэтому проблема может быть на ней. Добавьте еще одно сообщение о смерти:

 if($validator->fails()) { dd('Validation is failing!'); ... } 

6) Из комментария:

 $userData = array('email' => Input::get('email'), 'password' => Input::get('password')); return (string) Auth::attempt($userData)); 

7) Попробуйте создать другого пользователя вручную:

 $user = new User; $user->email = 'example@domain.com'; $user->password = Hash::make('passwordExample'); $user->save(); 

И войдите в систему:

 $userData = array('email' => 'example@domain.com', 'password' => 'passwordExample'); return (string) Auth::attempt($userData));