我可以检查散列密码是不是等于 laravel 中的特定值?
Posted
技术标签:
【中文标题】我可以检查散列密码是不是等于 laravel 中的特定值?【英文标题】:Can i check if a hashed password is equal to a specific value in laravel?我可以检查散列密码是否等于 laravel 中的特定值? 【发布时间】:2020-01-04 04:06:31 【问题描述】:在我的应用程序中,我为我创建的所有用户设置了一个默认密码(例如 1234),当用户第一次登录时,系统会要求他更改该密码
我的目标是当用户登录时,我想检查他的密码是否等于默认值 (1234),如果是,我将他重定向到重置页面,如果不是,我什么也不做
所以我的问题是 如何检查该用户的密码是否等于我拥有的值?
【问题讨论】:
您不存储其他信息,例如登录次数、上次登录日期、帐户状态标志吗?制作登录系统似乎是一种奇怪的方式。 这是一个只有管理员才能创建用户的应用程序,由于管理员无法为该用户分配密码,我们在用户登录时设置默认密码,他将被要求更改该密码密码并自己选择了一个新密码 我曾考虑过创建一个名为 is_first_login 的列,并为其设置一个默认值 true,当用户登录时,它将更改为 false,但这不是处理这种情况的一种非常优化的方法,因为我们已经可以通过密码检测到第一次登录 你应该在前端使用密码强度计,而不是做你想做的事...... 【参考方案1】:我在 *** 上找到了一个对我帮助很大的答案 您可以通过以下几种方式使用它:
容器外
$user = User::find($id);
$hasher = app('hash');
if ($hasher->check('passwordToCheck', $user->password))
// Success
使用外观
$user = User::find($id);
if (Hash::check('passwordToCheck', $user->password))
// Success
出于兴趣,使用通用 php 函数 password_verify 也可以。然而,这是可行的,因为它使用的默认哈希算法是 bcrypt。
if (password_verify('passwordToCheck', $user->password))
// Success
post url
【讨论】:
以上是关于我可以检查散列密码是不是等于 laravel 中的特定值?的主要内容,如果未能解决你的问题,请参考以下文章