如何使 Zend_Auth 对用户名大小写不敏感?

发布于 2024-12-28 10:55:19 字数 149 浏览 2 评论 0原文

有没有办法让 Zend_Auth 接受不区分大小写的身份(即用户名)? Zend_Auth 似乎提供了一种向凭证字段添加特殊处理的方法,但不向身份字段添加特殊处理。

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

Is there a way to make Zend_Auth to accept case-insensetive identities(i.e. usernames)? Zend_Auth seems to provide a way to add special treatment to a credential field, but not to identity field.

PS: I am using Zend_Auth_Adapter_DbTable that points to Postgres table.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

明媚如初 2025-01-04 10:55:19

像这样的东西应该可以工作:


$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 = 不区分大小写)。
希望有帮助

Something like this should work:


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

And be sure to use one of the *_ci collations in your database for username field (ci = case-insensitive).
Hope it helps

演多会厌 2025-01-04 10:55:19

您可以更改表,使用户名列的类型为 citext ,这样它不区分大小写,您仍然可以获得使用索引的好处。

You could alter your table so the username column is of type citext so it is case-insensitive and you still get the benefit of using the index.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文