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 中不起作用
Vue 2.x + Laravel 5.4 在资源管理器中不起作用