2013-12-08 3 views
0

Я создаю нового пользователя, а затем пытаюсь войти в систему, пользователь сохраняется в базе данных, и их роль также сохраняется. Хотя я никогда не ударил перенаправлять сказать, что они были записаны в я отладил Auth :: Instance-> логин и вернусь FALSEAuth :: экземпляр возвращает false при регистрации пользователя в

public function action_index() 
{ 

    $view = View::factory('index/home'); 

    if(Request::current()->post()): 
     $post = $_POST; 

     try { 
      $user = ORM::factory('User'); 

      $user->username = $post['username']; 
      $user->password = $post["password"]; 
      $user->email = $post["email"]; 
      $user->logins = +1; 
      $user->save(); 


      if ($user->saved()): 
       $user->add('roles', ORM::factory('Role')->where('name', '=', 'login')->find()); 


       $logged_in = Auth::instance()->login($post['username'], $post['password']); 

       echo Debug::vars($logged_in); exit;     

       if ($logged_in): 
        HTTP::redirect("/dashboard/"); 
       endif; 

      endif; 

     } catch (Exception $e) { 
      echo Debug::vars($e); exit; 
     } 
    endif; 

    $index_page = $view->render(); 
    $this->response->body($index_page);   
} 

Config

return array(

'driver'  => 'ORM', 
'hash_method' => 'sha256', 
'hash_key'  => 'bernardo', 
'lifetime'  => 1209600, 
'session_type' => Session::$default, 
'session_key' => 'auth_user', 

).

Может быть, что-то не так с паролем во время хэширования?

ответ

0

Вы храните пароль в виде открытого текста в базе данных (если вы не применяете какой-либо фильтр). Попробуйте выполнить следующее:

$user->password = Auth::instance()->hash($post["password"]); 

Это будет гарантировать, что пароль будет сохранен перед хранением. Auth будет хэш-пароль, прежде чем сравнивать его со значениями в базе данных.