gpt4 book ai didi

zend-framework - Zend_Auth_Adapter_DbTable 标识不是唯一的

转载 作者:行者123 更新时间:2023-12-02 02:15:19 25 4
gpt4 key购买 nike

为了在网站上进行身份验证,我使用 Zend_Auth_Adapter_DbTable。一切正常,但 Zend Framework 只允许在表中使用唯一标识。

作为身份,我使用用户的邮件地址。问题是,这个邮件地址在表中有更多的项目。用户可以删除那里的帐户,所以我不删除整行,我只将状态更改为 -2 或其他。活跃用户的状态为 1。

我试着像这样使用它:

    $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password', "? AND `status`='1'");
$authAdapter->setIdentity($email);
$authAdapter->setCredential($password);

但它不起作用。如果我删除具有相同邮件地址的非事件用户,一切正常。这是为什么?

最佳答案

你可以这样做

$authAdapter->setIdentity($email);
$authAdapter->setCredential($password);

$select = $authAdapter->getDbSelect();
$select->where('status = 1');

试试这个完整的代码

 $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password');
$authAdapter->setIdentity($email);
$authAdapter->setCredential($password);
$select = $authAdapter->getDbSelect();
$select->where('status = "1"');

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

$authAdapter->setTableName('user')
->setIdentityColumn('email')
->setCredentialColumn('password');

$select = $authAdapter->getDbSelect();
$select->where('status = "1"');

[编辑]
或者

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password');
$authAdapter->setIdentity($email);
$authAdapter->setCredential($password);
$authAdapter->setCredentialTreatment('? and status = "1"');

仅供引用:zend.auth.adapter.dbtable

关于zend-framework - Zend_Auth_Adapter_DbTable 标识不是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com