Php 如何在登录表单中不区分用户名大小写?

Php 如何在登录表单中不区分用户名大小写?,php,postgresql,symfony,symfony4,Php,Postgresql,Symfony,Symfony4,我使用的是Symfony的登录表单,但是如果输入的用户名是'FOO',并且数据库中存储的是'FOO',我就无法登录。我在用Postgres。这意味着用户名字段区分大小写。 我能做什么?这主要取决于您的数据库服务器。MySQL不区分大小写,PostgreSQL区分大小写 但您可以这样编写查询 $this->createQueryBuilder('user') ->where('LOWER(user.username) = :username')

我使用的是Symfony的登录表单,但是如果输入的用户名是'FOO',并且数据库中存储的是'FOO',我就无法登录。我在用Postgres。这意味着用户名字段区分大小写。
我能做什么?

这主要取决于您的数据库服务器。MySQL不区分大小写,PostgreSQL区分大小写

但您可以这样编写查询

$this->createQueryBuilder('user')
            ->where('LOWER(user.username) = :username')
            ->setParameter('username', strtolower($username))
            ->getQuery()
            ->getResult()
            ;


这主要取决于您的数据库服务器。MySQL不区分大小写,PostgreSQL区分大小写

但您可以这样编写查询

$this->createQueryBuilder('user')
            ->where('LOWER(user.username) = :username')
            ->setParameter('username', strtolower($username))
            ->getQuery()
            ->getResult()
            ;


如果您可以控制所使用的列类型,也许可以这样解决:@olek07我认为在您的情况下,您需要更新您的UserProvider,检查,考虑更新
loadUserByUsername()
方法以删除对用户名值的敏感检查是的,它可以工作。非常感谢。如果您可以控制使用的列类型,也许您可以这样解决:@olek07我想在您的情况下,您需要更新您的UserProvider,检查,考虑更新
loadUserByUsername()
方法以删除用户名值的敏感检查是的,它可以工作。非常感谢。是的,这也是我的解决方案。而且
property:email
应该从security.ymlBetter中删除,以存储具有noramlized(lower等…)用户名的用户,从而消除
lower
功能并减少数据库负载。看看FOSUserBundle是如何制作的。你是对的,但用户通常会像Otto一样输入他们的电子邮件地址。Mustermann@Gmail.comYes,这也是我的解决方案。而且
属性:应该从security.ymlBetter中删除电子邮件
,以存储具有noramlized(lower等…)用户名的用户,从而消除
lower
功能并减少数据库负载。看看FOSUserBundle是如何制作的。你是对的,但用户通常会像Otto一样输入他们的电子邮件地址。Mustermann@Gmail.com