[英]custom password reset api in laravel 5.7
默认情况下,通过电子邮件发送给电子邮件的密码重置令牌不同于保存到数据库的密码。 我已经使用了Hasher::make()
和hash_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);
}
Laravel默认实现使用的Hasher可以使用
$hasher = Password::broker()->getRepository()->getHasher();
然后,您可以对令牌进行哈希处理,将其添加到数据库中,如下所示:
$hasher->make($token);
您可以使用以下代码将令牌与数据库中存储的值进行比较:
$hasher->check($token, $databaseToken);
但是,为什么要实施自己的Laravel团队已经完成的工作? 除非您这样做很有趣,否则最好使用Laravel默认身份验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.