检查重置密码令牌是否有效 laravel

check if reset password token Valid laravel

我正在尝试检查此令牌和此电子邮件是否存在于 passwrod_reset table 中,但问题是我的令牌处于解密状态而 table 中的令牌处于加密状态,所以我怎么能检查令牌是否在 table 中?

public function checkData(Request $request){

   return DB::table('password_resets')->where(['token' => $request->token , 'email'=> $request->email])->exists();
   
}

received data from Request dd($request->all());

array:2 [
  "email" => "asd@asd.com"
  "token" => "6afa1b987d67bfbb9a599a3e30c45942a71b1e518d7406dbcf3b3266d689f732"
]

and finally the token in DB table password_resets

#items: array:1 [
    0 => {#351
      +"email": "asd@asd.com"
      +"token": "y$QNKyX42nm4W1MHZdeIUmBuNimeftiDnQQUCyZfDDgTwlbiRL//hsO"
      +"created_at": "2020-08-25 21:26:42"
    }
  ]

总而言之...如何使用来自数据库

的加密令牌y$QNKyX42nm4W1MHZdeIUmBuNimeftiDnQQUCyZfDDgTwlbiRL//hsO检查来自请求6afa1b987d67bfbb9a599a3e30c45942a71b1e518d7406dbcf3b3266d689f732的解密令牌

解决方法在这里..

在我的 forgetPassword 控制器中

    public function __construct(HasherContract $hasher)
    {
        $this->hasher = $hasher;
    }

      public function checkData(Request $request){
        $reset = DB::table('password_resets')->where(['email'=> $request->email])->first();
        if(!$reset){
            return false;
        }
        if($this->hasher->check($request->token, $reset->token)){
            return true;
        }
        return false;
      }