Laravel 5.5 reset password without email field
我还没有遇到一个网站要求您在重置请求期间确认您的电子邮件地址,这似乎是一个不必要的步骤,我希望我的用户只能输入密码和密码确认,但不能输入电子邮件。
我想知道是否有解决方案,我正在考虑一个简单的解决方案,我将把用户电子邮件地址作为参数传递到重置链接中,如下所示
1 | website.com/verify/{{reset_token}}/{{email}} |
然后我将检索这个电子邮件参数并将其传递到隐藏的输入值,但我不知道如何将电子邮件地址附加到重置链接。
如果每个人都知道任何解决方案,请在评论中告诉我
谢谢你的帮助
我希望您使用的是默认的Laravel路由,它是…
1 2 3 4 5 6 7 | // Don't forget to add the names to these routes. Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.forgot.get'); Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.forgot.post'); Route::get('password/reset/{token}', 'Auth esetPasswordController@showResetForm')->name('password.reset.get'); Route::post('password/reset', 'Auth esetPasswordController@reset')->name('password.reset.post'); |
然后运行
1 | php artisan make:mail PasswordResetMail |
号
然后在用户模型中添加此函数
1 2 3 4 | public function sendPasswordResetNotification($token) { Mail::send(new PasswordResetMail($this)); } |
然后在passwordresetmail中,然后在构造函数中,您将得到用户
1 2 3 4 | public function __construct($user) { $this->user = $user; } |
。
然后将用户与令牌一起传递到刀片视图,然后在刀片文件中添加路由
1 | route('password.reset.get', ['token' => $token, 'email' => urlencode($user->email)]); |
这将把电子邮件作为
1 | ?email=useremail%40gmail.com // Should be urlencoded |
。
然后,在重置表单中,将其添加为
1 | <input type="hidden" value="{{ urldecode(request()->get('email')) }}" name="email"> |
。
该走了:)