【问题标题】: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,但这不是处理这种情况的一种非常优化的方法,因为我们已经可以通过密码检测到第一次登录
  • 你应该在前端使用密码强度计,而不是做你想做的事......

标签: php database laravel hash passwords


【解决方案1】:

我在 StackOverflow 上找到了一个对我帮助很大的答案 您可以通过以下几种方式使用它:

容器外

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2021-04-17
    • 2011-01-04
    • 2020-02-10
    • 2021-05-19
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多