我刚刚开始学习Laravel,我正在关注文档。我知道Laravel使用emails.auth.reminder
视图作为电子邮件发送给重置token
的用户。在我的emails.auth.reminder
中,我提出了以下内容:
Hello Dear User,<br><br>
We have received a request from your account to reset your password at Larblog. Please use the following link to reset your password.<br><br>
{{ URL::to( 'user/resetpassword/' . Session::get('_token') ) }}<br><br>
If it wasn't you who tried to reset the password, simply ignore this email.<br><br>
Thanks,<br>
- Larblog
请注意,我使用Session::get('_token')
来访问令牌。这是我正确的做法吗?因为它总是一次又一次地生成相同的令牌。Z7vKMT5ssfzeXsQcVkrYodoRmYnbjH0prdP83jBk
。当我使用它来重置密码时,它会显示:Invalid token received
。另外,我已经检查了我的数据库的password_reminders
表,并且它显示了不同的令牌。当我使用存储在数据库中的令牌时,它可以工作。
那么,在通过电子邮件发送的视图中访问令牌的正确方法是什么?
答案 0 :(得分:2)
我不确定直接访问密码提醒令牌的方法是什么,但通常是在通过Password :: remind()函数发送电子邮件时,而不是通常的电子邮件功能。使用此时,$ token变量会自动传递到电子邮件视图中,以便您可以使用它。
此功能的一个示例用途是:
Password::remind(Input::only('email'), function ($message)
{
$message->subject('Password Reset');
});
然后在视图中访问它就像:
To reset your password, complete this form: {{ URL::to('reset', array($token)) }}
答案 1 :(得分:1)
会话中的_token不是密码提醒令牌 - 出于安全原因,它会自动插入the CSRF token。
由于我不知道您的表格和模型是什么样的,因此很难确切地说您应该如何获得实际的密码提醒令牌,但它可能是这样的:
$user = User::find($someid); // first fetch your user
$token = $user->passwordReminder->token; // now get the token
如果您的表格和型号与我的假设不同,请随时更新您的问题,我将很乐意更新我的答案。 :)