如何使Zend_Auth不敏感用户名?

时间:2012-01-22 05:35:15

标签: zend-framework postgresql authentication zend-auth

有没有办法让Zend_Auth接受case-insensetive身份(即用户名)? Zend_Auth似乎提供了一种方法来为凭证字段添加特殊处理,但不提供身份字段。

PS:我正在使用指向Postgres表的Zend_Auth_Adapter_DbTable。

2 个答案:

答案 0 :(得分:3)

这样的事情应该有效:


$authAdapter = new Zend_Auth_Adapter_DbTable(
       $dbAdapter,
       'usertable',
       new Zend_Db_Expr('LOWER(username)'),
       'password'
);

$authAdapter
   ->setIdentity(strtolower($this->_getParam('username'))
   ->setCredential($this->_getParam('password')); 

并确保在数据库中使用其中一个 * _ ci 排序规则用于用户名字段(ci =不区分大小写)。 希望它有所帮助

答案 1 :(得分:0)

您可以更改您的表,以便用户名列的类型为citext,因此它不区分大小写,您仍然可以使用索引。