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

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

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


person Alex N.    schedule 22.01.2012    source источник
comment
Привет, @Alex N. Я сталкиваюсь с той же проблемой, вы можете увидеть мой вопрос как сделать имя пользователя нечувствительным к регистру в zf2">stackoverflow.com/questions/47300930/, поскольку вы уже сталкиваетесь с этой проблемой   -  person Arsal Ali    schedule 17.11.2017


Ответы (2)


Что-то вроде этого должно работать:


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

person Sudhir Bastakoti    schedule 22.01.2012
comment
+1. И было бы неплохо обернуть это в пользовательский адаптер аутентификации, расширяющий Zend_Auth_Adapter_DbTable с помощью более простого конструктора public function __construct($dbAdapter) и переопределенного метода setIdentity(). См. pastebin.com/a6KnhKw8. - person David Weinraub; 22.01.2012
comment
Привет @David, я столкнулся с той же проблемой, вы можете увидеть мой вопрос сделать имя пользователя нечувствительным к регистру в zf2"> stackoverflow.com/questions/47300930/ любая помощь заметна - person Arsal Ali; 17.11.2017

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

person drew010    schedule 22.01.2012
comment
Привет @ drew010, вы можете увидеть мой вопрос stackoverflow.com/questions/47300930/ любая заметная помощь - person Arsal Ali; 17.11.2017