2012-01-22 1 views
2

Existe-t-il un moyen de faire en sorte que Zend_Auth accepte les identités insensibles à la casse (c'est-à-dire les noms d'utilisateur)? Zend_Auth semble fournir un moyen d'ajouter un traitement spécial à un champ d'accréditation, mais pas à un champ d'identité. PS: J'utilise Zend_Auth_Adapter_DbTable qui pointe vers la table Postgres.Comment rendre la casse de Zend_Auth insensible à un nom d'utilisateur?

+0

Salut @Alex N. je suis confronté au même problème pouvez-vous voir ma question https://stackoverflow.com/questions/47300930/how-to-make-username-case-insensitive-in-zf2 que vous avez déjà fait face à ce problème –

Répondre

3

Quelque chose comme cela devrait fonctionner:

 

$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')); 
 

Et assurez-vous d'utiliser l'un des * _ci dans votre base de données des classements pour le champ Nom d'utilisateur (ci = insensible à la casse). Espérons que cela aide

+1

+1. Et ce serait bien de l'intégrer dans un adaptateur auth personnalisé étendant 'Zend_Auth_Adapter_DbTable' avec un constructeur plus simple' public function __construct ($ dbAdapter) 'et une méthode' setIdentity() 'surchargée. Voir http://pastebin.com/a6KnhKw8. –

+0

Salut @David je fais face au même problème pouvez-vous voir ma question https://stackoverflow.com/questions/47300930/how-to-make-username-case-insensitive-in-zf2 toute aide appréciable –

0

Vous pouvez modifier votre table de sorte que la colonne du nom d'utilisateur soit de type citext, elle est donc insensible à la casse et vous avez toujours l'avantage d'utiliser l'index.

+0

Salut @ drew010 pouvez-vous voir ma question https://stackoverflow.com/questions/47300930/how-to-make-username-case-insensitive-in-zf2 toute aide appréciable –

Questions connexes