我一直在使用各种组码创建用户登录表单,用户登录必须根据唯一的组码进行工作。让我详细解释一下这两个用户名称(X和Y)存在于以下网站中细节
X loginname-testuser@gmail.com pwd- 123456 ,groupcode-TESTCODE
Y loginname-testuser@gmail.com pwd-test124, groupcode-TESTCODE2
我的Authcontroller
$adapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter(),
'users',
'login',
'password',
'MD5(?)','groupcode','TESTCODE');
$adapter->setIdentity($form->getValue('username'))
->setCredential($form->getValue('password'));
$result = Zend_Auth::getInstance()->authenticate($adapter);
结果alwyas通过身份验证错误的错误消息。默认的authcontroller从两个用户行中获取标识,它不从用户唯一的行值中获取。
答案 0 :(得分:2)
我不确定我是否完全理解这个问题,但希望其中一个解决方案可以帮到你。
首先,您将7个参数传递给Zend_Auth_Adapter_DbTable构造函数,但其构造函数只接受5个参数,因此groupcode和testcode对您的代码没有影响。
由于您可能会获得超过1个结果,因此设置歧义标识可能对您有用。通过调用$adapter->setAmbiguityIdentity(true);
来设置它,这样如果返回的结果超过1,它将查看每个结果以进行密码匹配。
如果您需要传递组代码和测试代码,那么您可能需要创建自己的身份验证适配器。您可以从Zend_Auth_Adapter_DbTable扩展以利用它已经完成的工作,但是覆盖authenticate()以便考虑您的组。
或者,您可以使用Zend_Auth检查身份,但根本不使用其身份验证方法,只需编写自己的类来验证用户登录,然后使用Zend_Auth设置身份。