2010-12-08 117 views
0

在閱讀Zend文檔和一些帖子後,我無法弄清楚如何讓我的用戶角色脫離用戶表。Zend_ACL如何獲得角色?

此刻,我在AuthController使用Zend_Auth的是這樣的:

// Set authentication adapter and map ID and Cre. 
// only admins could log in here 
$adapter = new Zend_Auth_Adapter_DbTable($this->db, 
      'customers', 
      'login', 
      'password', 
      'MD5(?)'); 
$adapter->setIdentity($form->getValue('username')) 
    ->setCredential($form->getValue('password')); 

// Check if authentification is right 
$result = Zend_Auth::getInstance()->authenticate($adapter); 

if (!$result->isValid()) { 
    .. 
} 

後來通過根據結果的Zend_Controller_Plugin和路由檢查:

if (Zend_Auth::getInstance()->hasIdentity()) { 
     return; 
} elseif ($request->getControllerName() == 'auth' || $request->getControllerName() == 'index') { 
     return; 
} else { 
     $request->setControllerName('index'); 
     $request->setActionName('index'); 
     return; 
} 

現在我想改變路線取決於用戶的滾動。如果用戶是管理員,他可以訪問AdminController,但是如何從我的用戶表中獲取角色?該列稱爲類型,它包含一個字符串女巫表示角色。

我希望你能幫助我。

問候,

-lony

回答

1

謝謝菲爾,它的工作原理!

只適用於我的解決方案。我已將此添加到AuthController:

// fetches role and login name out of 
// user table and store it in auth session 
$data = $adapter->getResultRowObject(array(
        'role', 
        'username' 
       )); 
Zend_Auth::getInstance()->getStorage()->write($data); 

現在我可以訪問我的角色(或用戶名)到處鍵入:

$role = Zend_Auth::getInstance()->getIdentity()->role; 
相關問題