2010-09-01 53 views
0

我創建了一個控制器,其中使用默認索引操作來顯示登錄表單,然後對用戶進行身份驗證。然而,我已經結束了不得不將功能添加到控制器,我覺得會混淆控制器。Zend Controller

例如我有這樣的功能:

protected function _process($values) 
    { 
     // Get our authentication adapter and check credentials 
     $adapter = $this->_getAuthAdapter(); 
     $adapter->setIdentity($values['username']); 
     $adapter->setCredential($values['password']); 

     $auth = Zend_Auth::getInstance(); 
     $result = $auth->authenticate($adapter); 
     if ($result->isValid()) { 
      $user = $adapter->getResultRowObject(); 
      $auth->getStorage()->write($user); 
      return true; 
     } 
     return false; 
    } 

    protected function _getAuthAdapter() { 

     $dbAdapter = Zend_Db_Table::getDefaultAdapter(); 
     $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); 

     $authAdapter->setTableName('users') 
      ->setIdentityColumn('username') 
      ->setCredentialColumn('password') 
      ->setCredentialTreatment('SHA1(CONCAT(?,salt))'); 

       return $authAdapter; 
    } 

什麼,你會建議做的,也許創造另一個目錄名爲custom_classes和包括文件到我的控制器這樣?

回答

0

鑑於你的榜樣,我會把這個成某種ACL的中心Zend_Controller_Plugin類,並在你的引導註冊這個類,以確保它始終運行。

此外,根據你在做什麼,邏輯可以進入你的模型之一。

模型應代表的組成某種形式的實體信息的集合,模型類也應負責讀取,更新,刪除和添加新的模式。

例如,用戶模型可以表示數據庫中的表中的用戶。它可能包含功能,如updateFailedLogins(),updateLogins()以及與該特定用戶模型的登錄過程相關的特定功能。

0

如果添加的方法所必需的控制器來處理它從用戶界面接收輸入,那麼它的罰款,讓他們在那裏。如果這是一個不同的問題,請確定它是哪個責任並在那裏添加方法。

如果您發現該方法的邏輯在很多控制器有用的,考慮將邏輯放在Zend_Controller_Action_Helper。如果您發現這必須在每個請求上運行,但與控制器操作沒有直接關係,請將其設置爲Zend_Controller_Plugin

在驗證用戶身份的情況下,你可能想創建一個Zend_Controller_Plugin實際控制動作叫做之前對用戶進行認證。

相關問題