2011-11-24 223 views
0

我有這樣的情況,管理員應該以管理員用戶身份登錄。我有用戶的電子郵件地址,這是我的網站的用戶名。如何在zend中使用電子郵件地址登錄?

我在登錄頁面使用以下代碼。

... 
$users = new Default_Model_DbTable_Users(); 
$auth = Zend_Auth::getInstance(); 
$auth = Zend_Auth::getInstance(); 
$authAdapter = new Zend_Auth_Adapter_DbTable($users->getAdapter(),'customers'); 
$authAdapter->setIdentityColumn('email')->setCredentialColumn('password'); 
$authAdapter->setIdentity($username)->setCredential(base64_encode($password)); 
$authAdapter->getDbSelect()->where('status = 1'); 
$result = $auth->authenticate($authAdapter); 
..... 

現在我只需要使用電子郵件地址登錄。我可以檢查ADMIN是否從admin端執行用戶登錄。是否可以使用電子郵件地址登錄?請在此建議

+0

您能澄清一下您想要做什麼嗎?您是否希望管理員能夠鍵入用戶的電子郵件地址而無需密碼以該用戶身份登錄? – drew010

+0

@drew謝謝,其實我在管理端有一個叫做「創建訂單」的按鈕,在用戶管理下。當管理員想要在該特定用戶中創建訂單時,管理員將點擊該按鈕以用戶身份登錄,它將重定向到前端。在這種情況下,我們該如何在zend中做到這一點? – mymotherland

回答

0

如果您希望允許管理員以管理員面板中的任何用戶身份登錄,則不必使用Zend_Auth::authenticate()來檢查針對數據庫的任何憑據。你真正需要做的就是像爲普通用戶登錄一樣設置身份。

從管理你可能會做這樣的事情:

$user = getUserInfoFromDatabase(); // get the user object used for Zend_Auth identity 
$auth = Zend_Auth::getInstance()->getStorage()->write($user); 
// redirect admin to user frontend 

唯一重要的事情是,無論你write()到存儲,必須是完全相同的對象/數據從您的用戶登錄的代碼寫入到存儲。

數據如何到達那裏並不重要,只要它是您的應用程序檢查身份的要求即可。

由於您的管理員已經通過身份驗證並有權訪問用戶帳戶,因此您無需使用Zend_Auth::authenticate()來驗證用戶的電子郵件/密碼,您可以跳過該步驟並直接爲該管理員直接分配身份參加會議。

如果您尚未使用管理員和用戶,您可能需要使用單獨的會話名稱空間。

希望幫助,讓我知道我是否可以澄清任何事情。您設置身份的部分可能短於您的代碼中的$result = $auth->authenticate($authAdapter);,可能是if ($result == true)

相關問題