Как сделать Zend_Auth нечувствительным к регистру имени пользователя? - PullRequest
2 голосов
/ 22 января 2012

Есть ли способ заставить Zend_Auth принимать идентификаторы без учета регистра (т. Е. Имена пользователей)?Zend_Auth, кажется, предоставляет способ добавить специальную обработку к полю учетных данных, но не к полю идентификации.

PS: я использую Zend_Auth_Adapter_DbTable, который указывает на таблицу Postgres.

Ответы [ 2 ]

3 голосов
/ 22 января 2012

Примерно так должно работать:


$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 = без учета регистра).Надеюсь, это поможет

0 голосов
/ 22 января 2012

Вы можете изменить свою таблицу так, чтобы столбец имени пользователя имел тип citext , поэтому он чувствителен к регистру, и вы по-прежнему получаете преимущество от использования индекса.

...