Bcrypt 在 Lumen 5.4 中不起作用:调用未定义的函数 bcrypt()

Posted

技术标签:

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

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

Call to undefined function bcrypt()

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

【问题讨论】:

【参考方案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); 好的,谢谢!可能值得补充的是,这是一种解决方法,因此人们会意识到这一点。 有什么方法可以获取哈希键。实际上,我接手了某人的项目,现在遇到同样的错误,现在之前的开发人员没有响应。而且我知道什么是加密密钥,因为我可以访问数据库。

以上是关于Bcrypt 在 Lumen 5.4 中不起作用:调用未定义的函数 bcrypt()的主要内容,如果未能解决你的问题,请参考以下文章

Route::currentRouteAction 在 laravel 5.4 中不起作用

ajax 类型的帖子在 laravel 5.4 中不起作用

Laravel bcrypt 密码在流明中不匹配

Vue 2.x + Laravel 5.4 在资源管理器中不起作用

为啥 findmany() 在这里不起作用 - Lumen/Laravel?

Spring Security bcrypt 编码登录不起作用