2012-08-06 43 views
2

我的網站有一個公共部分的員工和後臺的管理員。它使用兩種不同的模型,員工和管理員。cakephp驗證組件,使用兩個模型

我想使用Auth組件進行員工登錄和管理員登錄。我知道如何設置Auth組件以使用默認用戶模型以外的模型。但是,我可以讓auth組件使用2個模型,一個用於員工身份驗證,另一個用於管理員身份驗證?我正在使用admin_前綴路由。

這可能嗎?我搜索了但我能找到的所有教程都是關於如何使User模型以外的Auth組件使用模型的教程。

請指教!

編輯

我用admin登錄和員工登錄單獨的登錄表單。兩者都使用員工控制器,但使用單獨的操作。

+0

如何檢查用戶是否想要以員工或管理員身份登錄?你在使用任何一種單選按鈕嗎? – 2012-08-07 04:40:47

+0

@goose,我也面臨這個問題,如果你已經是一個解決方案,你應該發佈你的解決方案?我正在等待...... – 2015-01-02 14:43:50

回答

0

http://api.cakephp.org/class/auth-component

檢查的屬性進行身份驗證,你的答案是有!

以及更多: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html。 看看認證處理程序!

下面是一個例子直接從蛋糕頁面

<?php 
// Basic setup 
$this->Auth->authenticate = array('Form'); 

// Pass settings in 
$this->Auth->authenticate = array(
'Form' => array('userModel' => 'Member'), 
'Basic' => array('userModel' => 'Member') 
); 

剛裝上去的,而不是形式和其他基礎和良好的示範

0

關聯考慮使用兩個單選按鈕爲員工和管理。然後你可以在登錄方法中使用下面的代碼。

function login() 
{  
    if ($this->request->is('post')) 
    { 
     $logged_in = false; 
     $login_type = $this->request->data['User']['login_type'] 
     if ($login_type == 'Admin') 
     { 
      $this->Auth->authenticate = array('Form' => array('userModel' => 'Admin'));  
     } 
     else //if ($login_type == 'Employee') 
     { 
      $this->Auth->authenticate = array('Form' => array('userModel' => 'Employee'));    
     } 
     $this->Auth->constructAuthenticate(); 
     if ($this->Auth->login()) 
     { 
      $logged_in = true;     
        /*.... Do what you want............*/ 
     } 
    } 
} 
+1

我沒有使用單選按鈕來選擇登錄類型。我爲員工和管理員使用單獨的登錄表單。從我的答案中可以看出,我認爲我應該分開這個邏輯並將它們放在正常的登錄名和admin_login中。對? – Ivin 2012-08-07 05:50:48

+0

當然,但如果您使用兩種不同的模型,則必須使用'$ this-> Auth-> constructAuthenticate();重構Auth組件。 – 2012-08-07 05:56:08

+0

在這兩個操作中放置$ this-> Auth-> constructAuthenticate()?我檢查並回傳結果。謝謝! – Ivin 2012-08-07 06:17:06