如何创建一个laravel哈希密码
问题的出现原因:用户想要创建一个Laravel哈希密码,但不知道如何获取哈希密码的值。
解决方法:通过Laravel的tinker工具来获取哈希密码的值。
步骤:
1. 打开任意Laravel项目的命令行界面。
2. 输入命令php artisan tinker
来启动tinker工具。
3. 在tinker工具中输入命令echo Hash::make('123456');
,其中'123456'是你想要哈希的密码。
4. tinker工具会返回一个哈希后的密码值,类似于$2y$10$JHK.2MTc9ORMmmlqoF.gg.SwDLnevVSj1oreHParu5PvcPEDOWqe6
。
5. 复制这个哈希密码的值,以便在你的特定情况下使用。
这样,你就成功地创建了一个Laravel哈希密码,并且获取到了其值。
问题:如何创建一个Laravel哈希密码?
原因:Laravel提供了Hash门面,用于安全地进行Bcrypt哈希处理以存储用户密码。
解决方法:基本使用需要两个步骤。首先,在文件中引入Facade:
use Illuminate\Support\Facades\Hash;
然后使用Make
方法生成密码哈希:
$hashedPassword = Hash::make($request->newPassword);
当需要比对哈希字符串时,可以使用以下代码:
Hash::check($request->newPasswordAtLogin, $hashedPassword)
可以通过以下Laravel文档链接了解更多关于哈希的内容:
如何创建一个Laravel哈希密码
在Laravel中使用Bcrypt哈希密码:
$password = Hash::make('yourpassword');
这将创建一个哈希密码。您可以在控制器中使用它,甚至在模型中使用它,例如,如果用户使用表单通过POST方法将密码提交给您的控制器,您可以使用以下方式哈希它:
$password = Input::get('passwordformfield'); // password is form field $hashed = Hash::make($password);
在这里,$hashed将包含哈希密码。基本上,您将在创建/注册新用户时这样做,因此,例如,如果用户使用表单提交了诸如name、email、username和password等详细信息,那么在将数据插入数据库之前,在验证数据之后,您将哈希密码。有关更多信息,请参阅文档。
更新:
$password = 'JohnDoe'; $hashedPassword = Hash::make($password); echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
所以,您将$hashedPassword插入数据库。希望现在清楚了,如果您仍然困惑,我建议您阅读一些教程,在laracasts.com和tutsplus.com上观看一些屏幕录像,并阅读一本关于Laravel的书籍,这是一本免费的电子书,您可以下载。
更新:由于OP想要使用Laravel Hash手动加密密码,而不使用任何类或表单,所以这是一种使用命令提示符的artisan tinker的替代方法:
1. 打开命令提示符/终端。
2. 切换到Laravel安装目录(项目的根目录)。
3. 使用cd <目录名称>并按回车键。
4. 然后输入php artisan tinker并按回车键。
5. 然后输入echo Hash::make('somestring');。
更新(Laravel 5.x):
// 也可以使用bcrypt $password = bcrypt('JohnDoe');
但是我应该在哪里做这个。我遇到过几次这种情况。
我想我问错了问题。我的数据库(我从别人那里得到的)只有用户的哈希密码。现在我想创建一个应该由Laravel进行哈希的密码。我如何创建一个哈希密码,以便可以将其输入到数据库中。
这就是我回答的,要将密码保存到数据库中,您需要对其进行加密,因此,从明文密码开始,您将使用Hash::make('passwordstring')对其进行加密,然后将这个哈希密码保存在数据库中。
但是我该怎么做呢?如果我只是创建一个php文件,这行不通。正如您所理解的,我对Laravel还很陌生
我想我仍然有一个误导性的问题。因为我明白你的意思。但是我应该在哪个文件中使用这段代码?在哪里或......?因为我只会使用一次。这不是为了某种我可以添加用户之类的表单。
请用简单易懂的词或短语描述您要做的事情。
我有一个名为users的表,我可以在其中添加另一个用户。所有的密码都由Laravel进行哈希。如何获取我的密码哈希,以便我可以将其输入到我的数据库中。我知道我必须使用Hash::make(myPassword),但我如何使用它?如果我只是在我的Laravel项目中创建一个php文件并运行它,它不起作用。所以我在哪里可以使用它来获取我的密码哈希?
您想要手动逐个哈希密码,然后手动将每个密码保存在数据库中吗?
是的。我只想添加一个用户,然后手动将其添加到数据库中。这可行吗?
您的操作系统是什么,无论如何,检查更新的答案。
请尽快告诉我结果,我现在要离开了。
非常感谢。这就是我所需要的。我想给你点赞,但我没有足够的声誉。
不客气,没关系,我从您那里得到了声誉,因为您说了这些,并且已经足够了,还给您的问题+1 🙂
对于使用Laravel 5.0的人来说,由于某种原因,如果您使用php artisan tinker方法更新密码,它会自动为您进行哈希,因此您需要执行以下操作:`$u1->password = 'plaintextpassword'; $u1->save();`而不是`$u1->password = Hash::make('plaintextpassword'); $u1->save();`。我不知道为什么,但事情就是这样。浪费了半个小时纠结于为什么我的密码更改不起作用。结果,它们已经被预先哈希了。
嗨,先生,你能帮我解决一下这个问题吗? stackoverflow.com/questions/50771638/… 谢谢