Laravel在通知中发送重置密码链接

时间:2018-01-31 21:50:22

标签: laravel notifications change-password

我正在使用通知向用户发送电子邮件,其中有人为其创建了帐户。我想弄清楚的是如何将它们发送到密码/重置页面。我需要添加一个令牌来将密码重置为密码/重置地址的末尾。如果不是,当用户尝试重置密码时,他们会收到无效的令牌错误。那么我需要添加到url的末尾以便有一个有效的令牌?

$passwordReset = 'localhost/password/reset'

如何添加有效令牌以将密码重置为代码上方代码的末尾?

2 个答案:

答案 0 :(得分:1)

我相信网址应该是

localhost/password/reset/{token}

例如:

localhost/password/reset/15966e3b4460a10a025d2506609e2857d89eea6eed77e898e41922873111afa4

要使其正常工作,必须激活所有四个密码路由(如果使用默认的laravel auth):

Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

答案 1 :(得分:1)

如果你想发送带有令牌的邮件,你可以做到 你可以使用

Route::post('/PasswordReset', 'ResetPasswordController@GetToken');

然后通过邮件发送令牌 您可以在哪里保存令牌,甚至可以保存它 你可以使用Username有一个名为bcrypt()的函数; 你可以用它来散列他的用户名 并且它会给你很长的代币,但我不喜欢因为代币不会改变

我更喜欢将新密码发送给他并让他登录然后更改密码 你可以使用str_random(8); 它将生成8个带字母的随机数

尝试帮助你 首先,你必须配置你的邮件去Config / mail.php 并在驱动程序后添加此内容

'driver' => env('MAIL_DRIVER', 'smtp'),
'stream' => [
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
    ],
],

第二个转到你.env文件将此更改为您的主机详细信息列表尝试使用gmail one

MAIL_DRIVER = SMTP

MAIL_HOST = smtp.gmail.com

MAIL_PORT = 587

MAIL_USERNAME=yourgmailMail@gmail.com

MAIL_PASSWORD =你的密码

MAIL_ENCRYPTION = TLS

第三步转到你的Controller,你将在列表中发送邮件功能假设它的名字是SendMassEmailController This is the Whole Controller

最后一件事是路线 转到web.php

Route::post('/SendMassEmail','SendMassEmailController@SendMassEmail');

终于好运,玩得开心