2012-01-22 27 views
2

有沒有辦法使Zend_Auth接受不區分大小寫的身份(即用戶名)? Zend_Auth似乎提供了一種爲證書字段添加特殊處理的方式,但不提供身份字段。如何使Zend_Auth大小寫不區分用戶名?

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

+0

嗨@Alex N.我面臨同樣的問題,你可以看到我的問題https://stackoverflow.com/questions/47300930/how-to-make-username-case-insensitive-in-zf2因爲你已經面臨這個問題 –

回答

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

+1。它會是不錯的包裹到延長'用簡單的構造'公共職能__construct($將對DBAdapter)'和'重載setIdentity()'方法Zend_Auth_Adapter_DbTable'定製權威性適配器此。請參閱http://pastebin.com/a6KnhKw8。 –

+0

喜@大衛我面對你可以看到我的問題https://stackoverflow.com/questions/47300930/how-to-make-username-case-insensitive-in-zf2任何幫助明顯 –

0

你可以改變你的表,所以用戶名列的類型是citext所以它是不區分大小寫的,你仍然可以得到使用索引的好處。

+0

嗨@ drew010你可以看到同樣的問題我的問題https://stackoverflow.com/questions/47300930/how-to-make-username-case-insensitive-in-zf2任何幫助明顯 –

相關問題