小编bri*_*nna的帖子

如何使用Laravel 5.5身份验证使电子邮件登录不区分大小写

在构建我的应用程序时,我通过运行使用了Laravel身份验证脚手架,php artisan make:auth这非常棒并且节省了我很多时间.

但是,我遇到的问题是用户无法登录,因为他们无法记住他们最初注册时用于电子邮件的情况.

例如,注册的用户Myemail@domain.com无法登录myemail@domain.com.

我从我的研究中了解到,在技术上,@之前的部分因规范而区分大小写,并且上面的两封电子邮件在理论上可能属于两个不同的人.在我的情况下,我不认为我有可能需要在登录时强制执行此操作.

我使用的是Postgres数据库,所以我希望只需更换电子邮件数据库中查找Auth::attempt()与ilike替代的like,如果可能的.但是,我不能为我的生活找到它在源头的位置,因此不知道我将如何覆盖它.

Tl; dr如何覆盖Laravel的默认身份验证以不区分大小写的方式进行电子邮件查找?

解

我最终通过首先采用@btl建议并在email属性上实现mutator方法来解决问题.我不想要为现有用户更改所有电子邮件,感觉好像我遇到了一个问题,我想恢复区分大小写,我想要一个可以解决的问题很容易被撤消.

应用程序/ user.php的

public function getEmailAttribute($value) {
    return strtolower($value);
}
Run Code Online (Sandbox Code Playgroud)

应用程序/ HTTP /控制器/认证/ LoginController.php

protected function credentials()
{
    $username = $this->username();
    $credentials = request()->only($username, 'password');
    if (isset($credentials[$username])) {
        $credentials[$username] = strtolower($credentials[$username]);
    }
    return $credentials;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法弄清楚如何应用这个相同的逻辑,ForgotPasswordController.php但现在我会活着.无论现在如何,登录似乎都有效.

authentication laravel laravel-5 laravel-5.5

3
推荐指数
1
解决办法
3163
查看次数

标签 统计

authentication ×1

laravel ×1

laravel-5 ×1

laravel-5.5 ×1