【问题标题】:Bcrypt not working in Lumen 5.4: Call to undefined function bcrypt()Bcrypt 在 Lumen 5.4 中不起作用:调用未定义的函数 bcrypt()
【发布时间】:2017-07-28 14:10:27
【问题描述】:

我创建了一个新的 Lumen 5.4 项目并尝试播种一些数据。在播种机中,我使用 bcrypt 对密码进行哈希处理。但是当我运行php artisan db:seed 时,我得到了这个错误:

Call to undefined function bcrypt()

为什么我不能在 Lumen 中使用 bcrypt?我之前在 Laravel 中使用过。

【问题讨论】:

    标签: php lumen


    【解决方案1】:

    试试看,我的项目可以做的很好

     function bcrypt($value, $options = [])
            {
                return app('hash')->make($value, $options);
    
            }
    

    【讨论】:

    • 请为此答案提供更多信息。此外,对我来说,这似乎不是解决问题的真正方法,只是“让它运行”的快速解决方法。
    • 选项中应该包括什么?
    【解决方案2】:

    另一种解决方案是使用 Facades\Hash

    use Illuminate\Support\Facades\Hash;
    

    代码

    'password' => Hash::make('your_password')
    

    【讨论】:

      【解决方案3】:

      尝试这样做

      'password' => password_hash('123456', PASSWORD_BCRYPT)
      

      【讨论】:

      • 这个答案将被标记为低质量。请提供更多信息。
      【解决方案4】:

      正如您所提到的,bcrypt() 在 Lumen 中不存在。作为另一种解决方法,由于您提到在 Lumen 中播种,您可以在 \Faker\Generator 中使用它作为密码: $faker->password

      【讨论】:

      • 是的,所以您将不知道生成的密码,并且您将无法使用生成的用户测试脚本。没有。
      • @Sergiu 在许多用例中,您不会使用生成的用户登录;我相信这个选项是一个可行的选项,尤其是在那些情况下。提出的问题实际上并没有限制使用生成的用户测试脚本的需要,因此这种方法是有效的。
      • 我不同意,在测试/开发环境中,出于显而易见的原因,为所有用户使用相同的密码始终是一个好习惯。在生产环境中,你不会使用 Faker。
      【解决方案5】:

      你可以试试:

      app('hash')->make('yourpassword');
      

      【讨论】:

      • 没错,这或多或少是 bcrypt 实现的一种解决方法,但为什么不直接使用它呢?
      • 我真的不知道,但我知道的是bcrypt() 在它的源代码中返回这个return app('hash')->make($value, $options);
      • 好的,谢谢!可能值得补充的是,这是一种解决方法,因此人们会意识到这一点。
      • 有什么方法可以获取哈希键。实际上,我接手了某人的项目,现在遇到同样的错误,现在之前的开发人员没有响应。而且我知道什么是加密密钥,因为我可以访问数据库。
      猜你喜欢
      • 2015-11-08
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 2014-05-24
      • 2014-09-02
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      相关资源
      最近更新 更多