2014-12-28 1 views
0

Я искал решения и менял свой код взад и вперед, но ничего не работало для меня, и я честно отказался от надежды исправить его самостоятельно. Он остается на той же странице и не Redirect::to('test2'), но остается на той же странице, и когда я удаляю else { return Redirect::to('login'), он дает мне пустую страницу. Любая помощь была бы чрезвычайно оценена.Laravel 4 Аутентификация не работает и дает NO ERROR

Это мой пользователь модель файла:

protected $fillable=['email', 'password']; 

    protected $table = 'users'; 

    protected $hidden = array('password', 'remember_token'); 

    protected $primaryKey = 'id'; 

    public static $rules = array(
     'email' => 'required|email', 
     'password' => 'required', 
    ); 

    public function getAuthIdentifier() 
    { 
     return $this->getKey(); 
    } 

    public function getAuthPassword() 
    { 
     return $this->password; 
    } 

    public function getReminderEmail() 
    { 
     return $this->email; 
    } 

Это мои функции маршрутизации:

Route::get('/login', function(){ 
    return View::make('login'); 
}); 

Route::post('/login', function(){ 
    $validator = Validator::make(Input::all(), User::$rules); 
    if ($validator->fails()) { 
     return Redirect::to('login') 
      ->withErrors($validator) 
      ->withInput(Input::except('password')); 
    } else { 
     $userData = array(
      'email'  => Input::get('email'), 
      'password' => Input::get('password') 
     ); 
     if (Auth::attempt($userData)) { 
      return Redirect::to('test2'); 
      echo 'SUCCESS!'; 
     } else { 
      return Redirect::to('login'); 
     } 
    } 
+0

ли пароль, хранящийся в вашей базе данных? – lukasgeiter

+0

Да, он хэширован, и мой стол, и форма регистрации работают отлично. –

+0

Возможно ли, что пароль усечен? (Минимальная длина столбца пароля должна быть 60 символов) – lukasgeiter

ответ

0

я боролся вокруг с хэш в начале.
1. Если длина столбца пароля не равна 60, это не позволит вам войти в систему.
2. Перед входом через Auth :: попытка() вместо того, чтобы попытаться извлечь данные пользователя, используя его имя , а затем сравните пароль с помощью Hash :: чек() попробовать что-то в этом

Route::post('/login', function(){ 
    $validator = Validator::make(Input::all(), User::$rules); 
if ($validator->fails()) { 
    return Redirect::to('login') 
     ->withErrors($validator) 
     ->withInput(Input::except('password')); 
} else { 

$email=Input::get('email'); 
$user=User::where('email','=',$email)->first(); 
$bool=Hash::check('your password for the email',$user->password); 
if(bool) 
    { 
     if (Auth::attempt(Input::only('email','password'))) 
     { 
      return Redirect::to('test2'); 
      echo 'SUCCESS!'; 
     }else{ 
     return Redirect::to('login'); 
     } 
    }else{ 
    return echo 'password didn't matche'; 
    } 
}