2012-01-25 34 views
2

它看起來很平凡,但我真的找不到可以改變的地方。 我想用我的「玩家」模型而不是用戶,但是每次我進入/ players/login時,它都會將我重定向到「Missing Controller」頁面,並將更改鏈接到/ users/login。如何在CakePHP 2.0.4中爲Auth組件使用不同的模型?

我想:

public $components = array(
    'Session', 
    'Auth' => array(
     'authenticate' => array('all' => array('userModel' => 'Player')) 
    ) 
); 

function beforeFilter() { 
    $this->Auth->authenticate = array('all' => array('userModel' => 'Player')); 
} 

編輯:解決

'loginAction' => array('controller' => 'players', 'action' => 'login') 

在$組件陣列的幫助下,我認爲:d

+0

您的PlayersController是否存在?你把這個代碼放在哪裏? – entropid

+0

@Entropy當然我的PlayersController存在,我把它放在AppController中。我也在玩PlayersController中的parent :: beforeFilter()。 – lauriys

回答

4

我想問題是您沒有提供身份驗證系統。您正在提供一些設置以用於所有將要選擇的身份驗證系統,但您尚未選擇一個(您必須提供至少一個如Form,Basic,Digest,ecc ..)。

$this->Auth->authenticate = array(
    'all' => array('userModel' => 'Member'), 
    'Form', 
    'Basic' 
); 

(或$components數組中的相同)

+0

我不明白這是什麼。如果我使用表單登錄,我應該添加表單? – lauriys

+0

那麼,您必須以某種方式識別您的用戶,否則CakePHP會如何知道他們是否已登錄? 也許試着讀一下這個:http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html。 – entropid

+0

是的,如果您使用表單登錄,則應添加「表單」,然後按照頁面中的說明設置您的登錄操作! – entropid

0

你應該這樣做

public $components=array(
    'Session', 
    'Auth'=>array(
     'authenticate'=>array(
      'Form'=>array(
       'userModel'=>'Player', 
      ) 
     ), 
     'loginAction'=>array('controller'=>'Players', 'action'=>'login'), 
+0

這個問題是2歲;我甚至沒有使用PHP ... – lauriys

+0

它可能會幫助別人 – Ash

0

使用此代碼控制器內:

public $components = array(
    'Auth' => array(
    'loginRedirect' => array(
     'controller' => 'applications', 
     'action' => 'index' 
    ), 

    'logoutRedirect' => array(
     'controller' => 'applications', 
     'action' => 'login' 
    ), 

    'authenticate' => array(
      'Form' => array(
       'passwordHasher' => 'Blowfish', 
       'userModel' => 'Application' 
      ) 
     ),  
    ) 
); 

不要需要爲beforeFilter()函數添加任何代碼。 $組件加載Auth組件。

謝謝 Sujay

相關問題