首页 > 解决方案 > Laravel:收到带有用户名而不是令牌的密码重置链接

问题描述

我正在使用 Laravel 5.8 内置的身份验证脚手架。我只是在尝试密码重置功能。我去了路线password/reset,我得到了插入我的电子邮件地址的表单,我提交它并且我正确地收到了一封电子邮件,但是,重置页面的 URL 包含请求重置的用户的用户名而不是令牌。

因此,当我点击重置链接并尝试提交表单以重置密码时,我收到一个验证错误消息,提示令牌已磨损,实际上在令牌隐藏字段中,值设置为用户名而不是令牌,作为来自错误 URL 的参数。表格内password_resets有正确的令牌,应通过电子邮件发送。

web.php文件内部,Auth::routes();位于顶部,因此不应该与我的路线有任何冲突。

为什么 Laravel 发送错误的 URL?我应该检查什么?

编辑:里面LoginController唯一改变的是被覆盖的credentials()函数:

protected function credentials(Request $request)
{
    // This adds the check over the verify_token field upon login
    // the field must be null to pass the check
    return [
        'email'        => $request['email'],
        'password'     => $request['password'],
        'verification_token' => null
    ];
}

标签: laravelauthenticationlaravel-5laravel-5.8

解决方案


我的坏(当然)。我离开这个项目几个月了,我忘了还覆盖了电子邮件的模板,我把它搞砸了。无论如何,谢谢你的时间,对不起。


推荐阅读