Laravel 5.3 - 如何从“忘记密码”功能中获取令牌?

时间:2016-10-15 19:18:52

标签: laravel-5

使用Laravel 5.3,我知道如何更改默认密码重置电子邮件的内容,但这不是我想要删除的路径。我们的应用程序通过Mailjet模板发送所有电子邮件,我们设置了特定的特征,因此很容易将电子邮件放在该路线上。因此,为了保持结构,我希望密码重置功能沿着相同的路线运行。

我需要做的就是从重置密码中涉及的众多方法中获取令牌和令牌,然后我可以单独生成电子邮件和链接并通过Mailjet发送

任何人都可以给出的任何指示都将非常感激。

1 个答案:

答案 0 :(得分:4)

您正在谈论的令牌是在用户填写"忘记密码"字段。

令牌位于password_resets数据库表中。在该表格中,您会看到用户emailtoken。您想要获得的令牌是那里的令牌。

要获取令牌,您可以执行以下查询:

$pw_reset = \DB::table('password_resets')->where('email', $user->email)->first();

现在,您只需执行$pw_reset->token即可获取用户的令牌。确保您的表中有记录,否则您将获得例外。您可以将上面的->first()替换为->firstOrFail()

来执行此操作

这就是你如何获得密码重设令牌。

生成令牌而无需用户请求密码重置电子邮件

我不希望用户填写"忘记密码"字段并请求电子邮件然后获取令牌,您可以手动创建令牌。

$user = User::find(1) // Get the user with an ID of 1. This can be any user ID

$pw_reset = DB::table('password_resets')->insert(
    ['email' => $user->email, 'token' => str_random(255)]
);

您将在数据库中插入用户令牌,并可以使用$pw_reset->token获取最近存储的令牌。

你去吧。我向存储 存储数据库中的令牌以及一种方式向检索数据库中的令牌提供了<。 / p>