2011-11-24 220 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)

相关问题