Laravel 5.6:重置密码链接坏了吗?

时间:2018-04-09 14:38:14

标签: php laravel authentication

我正在为我的应用程序的忘记密码编写功能,可以看到我的password_resets已填充:

CREATE TABLE `password_resets` (
  `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `token` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  KEY `password_resets_email_index` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

with:

ts@test.tes $2y$10$yv1qGOxvamSEmdteK6NNUuDnHmhKUjFQyJBHtOxeYwRiqGSWr936O    2018-04-09 14:03:32

在我的ResetPasswordController @ reset(请求$请求)中,我有:

 $token = \DB::table('password_resets')->where('token',$request->_token)->first();

另外,当我尝试使用以下位手动执行此操作时,由于password_resets表中的标记被哈希处理,它再次失败:

任何想法都将受到高度赞赏!

更新

/**
     * Reset the given user's password.
     *
     * @param  \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function reset(Request $request)
    {
        $validator = $this->validator($request->all());
        if ($validator->fails()) {
            dd('FAILED');
        }

$ token = \ DB :: table('password_resets') - > where('token',$ request-> get('_ token')) - > first();     DD($令牌);

        $message = [
            'title' => trans('passwords.resetTitleSuccess'),
            'description' => trans('passwords.reset'),
            'status' => 'success',
        ];

        return redirect($this->redirectTo)->with('message', $message);
    }

1 个答案:

答案 0 :(得分:0)

<强>更新

尝试以下方法:

使用网址和

传递电子邮件

而不是

$token = \DB::table('password_resets')->where('token', $request->get('_token'))->first()

这样做

$reset = DB::table("password_resets")->where('email', $request->email)->firstOrFail();
if(!$this->hasher->check($request->token, $reset->token))

您的答案在错误消息中。 Laravel正在您的数据库中查找_token列,并且您的列名为token。将您的输入名称更改为token,然后致电$request->token进行访问。