首页 > 解决方案 > Laravel 5.5 重置密码没有电子邮件字段

问题描述

我没有遇到要求您在重置请求期间确认您的电子邮件地址的网站,这似乎是一个不必要的步骤,我希望我的用户只能输入密码和密码确认,但不能输入电子邮件。

我想知道是否有解决方案,我正在考虑一个简单的解决方案,我将像这样在重置链接中将用户电子邮件地址作为参数传递

website.com/verify/{{reset_token}}/{{email}}

然后我将检索此电子邮件参数并将其传递给隐藏的输入值,但我不知道如何将电子邮件地址附加到重置链接。

如果每个人都知道任何解决方案,请在评论中告诉我

谢谢你的帮助

标签: laravelreset-password

解决方案


我希望你使用的是默认的 Laravel 路由......

// 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\ResetPasswordController@showResetForm')->name('password.reset.get');
Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.reset.post');

然后运行

php artisan make:mail PasswordResetMail

然后在您的用户模型中,添加此功能

public function sendPasswordResetNotification($token)
{
  Mail::send(new PasswordResetMail($this));
}

然后在PasswordResetMail中,然后在您的构造函数中,您将获得用户

public function __construct($user)
{
  $this->user = $user;
}

然后将用户与令牌一起传递给刀片视图,然后在刀片文件中添加路由

route('password.reset.get', ['token' => $token, 'email' => urlencode($user->email)]);

这将通过电子邮件作为

?email=useremail%40gmail.com // Should be urlencoded

然后,在您的重置表单中,将其添加为

<input type="hidden" value="{{ urldecode(request()->get('email')) }}" name="email">

应该很好去:)


推荐阅读