Laravel密码重置令牌保存在数据库中时有所不同

时间:2019-04-10 10:59:39

标签: laravel

我正在开发Laravel应用程序。我现在正在自定义密码重置功能。从数据库取回密码重置令牌存在问题,因为从生成令牌令牌字符串到数据库中保存时,令牌字符串都会更改。请在下面查看我的代码。

我明确生成了这样的密码重置令牌

$token = app('auth.password.broker')->createToken($user)

然后,我试图通过使用这样的令牌来检索密码重置。

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

我无法检索它。它总是返回null。因为令牌值与生成它的时间不同,如下面的屏幕截图所示。

enter image description here

为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:0)

将令牌存储在数据库中之前先对其进行哈希处理。它在110行的DatabaseTokenRepository'token' => $this->hasher->make($token)中散列。

您将无法通过令牌查询。例如,您只能使用HashManager类中的check方法将常规令牌值与哈希值进行比较。

答案 1 :(得分:-1)

基于Passport

您的代码应该是这样的
$token = app('auth.password.broker')->createToken($user)->accessToken