Laravel 在通知中发送重置密码 link

Laravel sending a reset password link in a notification

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

$passwordReset = 'localhost/password/reset'

如何在上面代码的末尾添加一个有效的令牌来重置密码?

我认为 url 应该是

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');

如果你想用令牌发送邮件,你可以这样做 你可以使用

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

然后邮寄Token 你可以在哪里保存令牌你甚至可能不保存它 您可以使用用户名,其中有一个名为 bcrypt() 的函数; 你可以通过它散列他的用户名 它会给你长令牌,但我不喜欢,因为令牌不会改变

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

的随机数

试图帮助你 首先你必须配置你的邮件去 Config/mail.php 并在 driver

之后添加
'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=你的gmailMail@gmail.com

MAIL_PASSWORD=你的密码

MAIL_ENCRYPTION=tls

第三次转到您的控制器,您将在列表中使用发送邮件功能假设它的名称是 SendMassEmailController This is the Whole Controller

最后一件事是路线 前往 web.php

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

终于祝你好运,玩得开心