我正在为我的应用程序的忘记密码编写功能,可以看到我的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);
}
答案 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
进行访问。