我可以检查散列密码是不是等于 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 中的特定值?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2验证检查值是不是不等于变量

如何使用 Laravel 5.8 将散列密码存储到数据库中

如何创建一个 laravel 哈希密码

独立的laravel脚本

PHP密码散列算法的学习

在客户端散列密码是不是具有安全意义