2012-04-04 169 views
0

我一直在與此戰鬥一段時間。我有一個需要身份驗證的CakePHP 2.0應用程序,由於它必須使用另一種語言,我用'用戶名'和'密碼'約定離開了automagic'User'並創建了自己的數據庫表:CakePHP 2.0 Auth登錄無效

utilizatori('id', 'nume', 'parola') 

在我AppController的我有以下定義了,如果我理解正確的應該覆蓋默認的CakePHP協會和使其使用我的新結構:

class AppController extends Controller { 
    var $components = array('Session', 
    'Auth' => array('Form' => array(
     'userModel' => 'Utilizator', 
     'fields' => array('username' => 'nume', 'password' => 'parola'), 
     'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'), 
     'loginRedirect' => array('controller' => 'categorii', 'action' => 'admin_index')))); 

    function beforeFilter() { } 
} 

在我UtilizatoriController我有以下登錄福nction:

function login() 
{ 
    $this->layout = 'admin'; 
    debug($this->data); 
    debug(Security::hash($this->data['Utilizator']['parola'])); 
    debug($this->Auth->login()); 
    /*more here but don't think it's important*/ 

數據調試出現與預期值,讓我們假設:

**data['Utilizator']['nume']** = 'Cosmin' 
**data['Utilizator']['parola']** = 'Cosmin' 

密碼哈希調試產生這也是我手動在數據庫中插入期望的散列和但登錄函數返回false

我不確定下一步該做什麼以及任何反饋意見。 另外,有沒有辦法訪問發送到$ this-> Auth-> login()

謝謝

回答

1

事實證明,後面$這個 - > Auth-)失敗的原因>登錄(是我的AuthComponent的聲明中AppController的。經過一些更多的研究和一個令人驚訝的小但有用的帖子How can I use different model for Auth component in CakePHP 2.0.4?我審查了我的代碼,現在它似乎工作。

如果有人遇到此問題,我會在此發佈評論。

public $components = array(
    'Session', 
    'Auth' => array(
     'authenticate' => array(
      'Form' => array(
       'userModel' => 'Utilizator', 
       'fields' => array(
        'username' => 'nume', 
        'password' => 'parola' 
       ) 
      ) 
     ), 
     'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'), //Not related to the problem 
     'loginRedirect' => array('controller' => 'utilizatori', 'action' => 'index'), //Not related to the problem 
     'logoutRedirect' => array('controller' => 'utilizatori', 'action' => 'index') //Not related to the problem 
    ) 
);