Laravel 5.5重置密码,不带电子邮件字段

时间:2018-06-23 02:46:21

标签: laravel reset-password

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

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

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

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我希望您使用的默认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">

应该很好:)