如何在zend中使用电子邮件地址登录?

时间:2011-11-24 09:51:51

标签: zend-framework

我有类似的情况,管理员应该从管理员端以用户身份登录。我有用户电子邮件地址,这是我网站的用户名。

我在登录页面中使用以下代码。

...
$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端登录用户。是否可以使用电子邮件地址登录?请提供关于此的建议

1 个答案:

答案 0 :(得分: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)

相关问题