0

我正在构建一个密码重置机制,它工作得很好,除了一个小奇怪的问题。Redirect::to('/login')如果在 Password::reset() 部分调用,则不起作用。

Password::reset($credentials, function($user, $password) {
      $user->password = Hash::make($password);
      $user->save();
      return Redirect::to('/login');
});

但是,如果我把它放在外面,它会起作用:

Password::reset($credentials, function($user, $password) {
      $user->password = Hash::make($password);
      $user->save();

});
return Redirect::to('/login');

但在这种情况下,我如何验证用户的电子邮件是否属于实际令牌?

理想情况下,我想得到这样的东西

Password::reset($credentials, function($user, $password) {
      $user->password = Hash::make($password);
      $user->save();
      return Redirect::to('/login'); // success you may use your new password
});
return Redirect::to('/reset'); // validation falied try one more time
4

1 回答 1

4

仔细检查有关密码重置的文档- 您会注意到这Password::reset()将返回您关闭的结果。这就是您可以通过返回Redirect::to呼叫来完成此操作的方法。

使用您问题中的“理想”版本,请注意在调用return之前添加的语句Password::reset()以及验证检查/重定向的移动发生在调用之前Password::reset()

if( ! VALIDATION FAILED )
{
    return Redirect::to('/reset'); // validation failed, try one more time
}

return Password::reset($credentials, function($user, $password) {
      $user->password = Hash::make($password);
      $user->save();
      return Redirect::to('/login'); // success, you may use your new password
});

这是文档示例中的内容:

在此处输入图像描述

于 2013-09-11T12:59:42.303 回答