【问题标题】:Laravel Manually generating reset password token : Getting error "This password reset token is invalid"Laravel 手动生成重置密码令牌:收到错误“此密码重置令牌无效”
【发布时间】:2018-09-30 19:31:01
【问题描述】:

我正在尝试在 laravel 中手动生成重置密码令牌。

$string = hash_hmac('sha256', Str::random(40), "my hash string");

然后我得到“0afa340dc692ffa51c1ba12b1db8819a8e4eaebb44a991bb288c3af877d36ee6

我用

对这个字符串进行了哈希处理
$hash = Hash::make($string);

然后我得到了

$2y$10$onDUmasKFCF9r1.VwOq3ze7Kx225UZK/HkwoUmH4h5dRo/8iCV2Be

我将哈希令牌保存在与电子邮件 ID 对应的“password_resets”表中。 我替换了重置密码网址中生成的字符串并尝试重置指定电子邮件的密码,但我总是收到“This password reset token is invalid”。

我的手动生成是否有任何错误。请帮忙。

【问题讨论】:

标签: laravel passwords token reset forgot-password


【解决方案1】:

您的模型中的此功能将生成密码休息链接:

public function getNewPassResetUrl(){
    $token=str_random(60);
    \DB::table('admin_password_resets')->where('email',$this->email)->delete();
    \DB::table('admin_password_resets')->insert([
        'email' => $this->email,
        'token' => \Hash::make($token), //change 60 to any length you want
        'created_at' => \Carbon\Carbon::now()
    ]);
    return url('reset',$token);
}

【讨论】:

  • 你能把你的答案说清楚你说的是哪个型号吗?我这里也有同样的问题
【解决方案2】:

要生成一个令牌,你可以像下面的 sn-p 那样做,这对使用 Laravel 的实现有额外的好处,所以如果它在某个时候发生了变化,你不需要改变任何东西。

\Illuminate\Support\Facades\Password::broker('users')->createToken($user);

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多