0

默认情况下,通过电子邮件发送到电子邮件的密码重置令牌与保存到数据库的密码重置令牌不同。我已经使用Hasher::make()andhash_hmac('sha256', $token, env('APP_KEY'))对其进行哈希处理,然后将该令牌与数据库进行比较,但无济于事。我应该怎么做才能将电子邮件令牌转换为数据库令牌或比较它们?我也试过

public function convertToken($token)
    {
        if (Str::startsWith($key = env('APP_KEY'), 'base64:')) {
            $key = base64_decode(substr($key, 7));
        }
        return hash_hmac('sha256', $token, $key);
    }
4

1 回答 1

0

Laravel 默认实现使用的Hasher可以通过

$hasher = Password::broker()->getRepository()->getHasher();

然后,您可以像这样散列您的令牌以将它们添加到您的数据库中:

$hasher->make($token);

您可以使用以下代码根据存储在数据库中的值检查令牌:

$hasher->check($token, $databaseToken);

但是你为什么要自己实现 Laravel 团队已经做过的事情呢?你最好使用 Laravel 默认身份验证,除非你这样做是为了好玩。

于 2019-03-06T16:28:29.643 回答