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

时间:2020-08-25 21:47:06

标签: php laravel token laravel-7

我正在尝试检查passwrod_reset表中是否存在此令牌和此电子邮件,但是问题是我的令牌已解密,而表中的令牌已加密,所以我如何检查令牌是否在表中?

public function checkData(Request $request){

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

从请求dd($request->all());收到的数据

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

最后是数据库表password_resets中的令牌

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

全部...如何使用来自数据库的加密令牌6afa1b987d67bfbb9a599a3e30c45942a71b1e518d7406dbcf3b3266d689f732检查来自请求$2y$10$QNKyX42nm4W1MHZdeIUmBuNimeftiDnQQUCyZfDDgTwlbiRL//hsO的解密令牌

1 个答案:

答案 0 :(得分:0)

解决方案在这里。

在我的忘记密码控制器中

    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;
      }