2012-09-12 4 views
0

글쎄, 그게 문제. 코드는 간단하다 : Kohana 3.2 ORM Auth 모듈에 로그인 할 수 없습니까?

public function action_index() 
{ 

    $post = $this->request->post(); 

    if ($post) {  
     // if I type it like this, manually - it will work 
     $success = Auth::instance()->login('admin','password'); 

    } 

    if (isset($success) and $success) { echo "Пользователь залогинен"; } 

} 

불행하게도이 테이블에 있던 기본 설정으로 나는 새 사용자를 작성하는 경우, 관리자 인 데이터베이스에서 단지 첫 번째 레코드를 로그인합니다.

$auth = Auth::instance(); 
     $user = new Model_User(); 
     $user->username = "Victor"; 
     $user->$auth->hash_password('psw123'); 
     $user->email = "[email protected]"; 
     $user->save(); 

내가 말했듯이

$post["email"] or $post["username"] with $post["password"]

코드로 만 실제 데이터, 사용보다는 :이처럼 내 안에

if ($post) {  
    // the values from posts: 'Victor' or '[email protected]` & 'psw123' 
    $success = Auth::instance()->login('[email protected]','psw123'); 

} 

를 기록하지 않습니다.

upd 관리자로 로그인 할 수 없지만 역할을 login (데이터베이스에서 1)으로 변경하면 완벽하게 작동합니다. 그러나 역할이 2 (admin 역할 임)으로 설정되면 나를 수용하지 않으며 심지어 Auth의 인스턴스를 만들지 않습니다. 역할이 될 것입니다 경우

 $post = $this->request->post(); 

     $success = Auth::instance()->login($post['email'], $post['pass']); 


     if ($success) 
     { 
      echo "SUCCESS!"; 
     } 

다시 한 번,이 것 성공 나를 대신 login 역할을하지 않습니다 (그것은 관리자를 의미합니다).

이 문제의 원인은 무엇일까요?

답변

2

기본 ORM 인증 드라이버를 사용하고 있다고 가정합니다. 새 사용자를 저장할 때 비밀번호를 해시 할 필요가 없습니다. 모델의 필터가 자동으로 수행합니다. 따라서 새 사용자를 저장하면 다음과 같이 보일 것입니다.

$user = ORM::factory("user"); 
$user->username = "Victor"; 
$user->password = "psw123"; 
$user->email = "[email protected]"; 
$user->save(); 
+0

예, 역할에 대해서도 잊어 버렸습니다. 그래서 괜찮아요! 어쨌든 고마워! –

+0

안녕하세요. 다시 도움이 필요합니다. 시계 ** upd **. –

+1

저는 _login_ 및 _admin_ 역할을 독점적으로 사용하고 있다는 것을 알고 있습니다. 로그인 권한이있는 모든 사용자에게는 _login_ 역할이 필요합니다. 따라서 관리자 사용자는 _login_ 및 _admin_ 역할을 모두 가져야합니다. – jkondratowicz