Php laravel 5.2中输入的重置密码电子邮件区分大小写,不区分大小写
我正在从事laravel5.2项目,我正在使用laravel的默认身份验证模块,该模块还为我们提供重置密码功能Php laravel 5.2中输入的重置密码电子邮件区分大小写,不区分大小写,php,laravel,Php,Laravel,我正在从事laravel5.2项目,我正在使用laravel的默认身份验证模块,该模块还为我们提供重置密码功能 use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; public function sendResetLinkEmail(Request $request) { $this->validateEmail($request);
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$data['email'] = strtolower($request->email);
$response = $this->broker()->sendResetLink($data);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($response)
: $this->sendResetLinkFailedResponse($request, $response);
}
我面临的问题的情况下,如果用户是注册的
abcd@gmail.com
如果用户输入电子邮件重置密码是
Abcd@gmail.com
在这种情况下,它抛出的错误与此电子邮件帐户不存在
正如我们所看到的,这两封邮件都是相同的,但仅仅因为第二封邮件中的第一个字母大写,它就抛出了错误
如何使此功能不区分大小写?搜索电子邮件的文件路径为illumb\Foundation\Auth\ResetsPasswords。但您不想编辑此文件。此文件包含在PasswordController类中使用的php特性。 因此,您可以通过重写trait方法来更改其功能 postEmail是要覆盖的方法,用于查找具有给定电子邮件的用户并发送重置链接。使用ilike不敏感地通过电子邮件大小写查找用户。然后用确切的用户电子邮件覆盖请求电子邮件变量 以下是PasswordController类(App\Http\Controllers\Auth\PasswordController)中的代码
搜索电子邮件所用文件的路径\Foundation\Auth\ResetsPasswords。但您不想编辑此文件。此文件包含在PasswordController类中使用的php特性。 因此,您可以通过重写trait方法来更改其功能 postEmail是要覆盖的方法,用于查找具有给定电子邮件的用户并发送重置链接。使用ilike不敏感地通过电子邮件大小写查找用户。然后用确切的用户电子邮件覆盖请求电子邮件变量 以下是PasswordController类(App\Http\Controllers\Auth\PasswordController)中的代码
在ForgotPasswordController.php中添加此函数以覆盖默认功能
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$data['email'] = strtolower($request->email);
$response = $this->broker()->sendResetLink($data);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($response)
: $this->sendResetLinkFailedResponse($request, $response);
}
在ForgotPasswordController.php中添加此函数以覆盖默认功能
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$data['email'] = strtolower($request->email);
$response = $this->broker()->sendResetLink($data);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($response)
: $this->sendResetLinkFailedResponse($request, $response);
}
这一切都归结于整理 我最近在一个使用Laravel5.2的旧站点上也遇到了这个问题。事实证明,将数据库中电子邮件列的排序规则从utf8mb4_bin更改为utf8mb4_unicode_ci解决了这个问题 显然,MySQL适配器在进行查询时确实使用LIKE,但只有在列排序规则允许的情况下才返回不区分大小写的结果。我的不是 关于这个堆栈溢出问题,MySQL排序和区分大小写的主题有更多的讨论:
以及在美国 这一切都归结于整理 我最近在一个使用Laravel5.2的旧站点上也遇到了这个问题。事实证明,将数据库中电子邮件列的排序规则从utf8mb4_bin更改为utf8mb4_unicode_ci解决了这个问题 显然,MySQL适配器在进行查询时确实使用LIKE,但只有在列排序规则允许的情况下才返回不区分大小写的结果。我的不是 关于这个堆栈溢出问题,MySQL排序和区分大小写的主题有更多的讨论:
以及在美国 在搜索密码数据之前,可以对密码数据使用strtolower()函数database@OdinThunder是的,我知道,但是我没有得到它搜索电子邮件存在的文件/函数。在它搜索之前,可以对密码数据使用strtolower()函数database@OdinThunder是的,我知道,但是我没有得到它搜索电子邮件存在的文件/函数。