2012-09-12 78 views
0

那麼,這是一個麻煩。代碼很簡單:我無法在Kohana 3.2 ORM身份驗證模塊中登錄?

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!"; 
     } 

再次,如果該角色將是2(這意味着管理員),這是不是會成功,而不是我的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