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');
终于祝你好运,玩得开心
我正在使用通知向用户发送电子邮件,告知有人为他们创建了帐户。我想弄清楚的是如何将操作发送到 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');
终于祝你好运,玩得开心