我该如何创建Laravel哈希密码?在哪里可以找到?
编辑: 我知道代码是什么,但我不知道在哪里以及如何使用它来获得哈希密码。如果我获得了哈希密码,那么我就可以手动将其插入到数据库中。
在 Laravel
中使用 Bcrypt 进行密码哈希:
$password = Hash::make('yourpassword');
这将创建一个哈希密码。您可以在控制器甚至模型中使用它,例如,如果用户使用表单向您的控制器提交密码,则可以使用类似以下代码的方式进行哈希:
$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);
在这里,$hashed
会包含加密后的密码。基本上,在创建/注册新用户时使用此方法,例如,如果用户使用表格提交详细信息,如名称
,电子邮件
,用户名
和密码
等,则在插入数据到数据库之前,您需要验证数据并对密码进行哈希处理。有关更多信息,请阅读文档。
更新:
$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
所以,您将把$hashedPassword
插入数据库中。希望现在清楚了,如果仍然感到困惑,那么我建议您阅读一些教程,在laracasts.com和tutsplus.com上观看一些屏幕录像,并阅读关于Laravel
的书籍,这是一本免费的电子书,您可以下载它。
更新:由于OP
想要使用Laravel Hash
手动加密密码而没有任何类或表单,因此这是使用命令提示符中的artisan tinker
的替代方法:
Laravel
安装目录(您的项目根目录)cd <目录名>
并从命令提示符/终端按Enter键php artisan tinker
并按Enter键echo Hash::make('somestring');
// Also one can use bcrypt
$password = bcrypt('JohnDoe');
db
中,您需要对其进行加密,因此您需要使用 Hash::make('passwordstring');
对明文密码进行加密,然后将这个哈希密码保存在数据库中。 - The Alpha我了解你的痛苦兄弟。你只需要密码哈希值来替换数据库中的密码字段。你可以轻松地从Laravel Tinker获取它。 在任何Laravel项目命令行上键入:
❯ php artisan tinker
Psy Shell v0.9.12 (PHP 7.4.27 — cli) by Justin Hileman
>>> echo Hash::make('123456');
$2y$10$JHK.2MTc9ORMmmlqoF.gg.SwDLnevVSj1oreHParu5PvcPEDOWqe6
然后复制哈希密码以便您的使用情况。
Laravel的Hash外观提供了安全的Bcrypt哈希算法,用于存储用户密码。
基本使用需要两个步骤:
第一步,在你的文件中包含该外观。
use Illuminate\Support\Facades\Hash;
使用Make
方法生成密码。
$hashedPassword = Hash::make($request->newPassword);
当您想要匹配散列字符串时,您可以使用以下代码:
Hash::check($request->newPasswordAtLogin, $hashedPassword)
您可以通过下面的 Laravel 文档链接了解有关哈希的更多信息: https://laravel.com/docs/5.5/hashing
Laravel 5使用bcrypt
,所以您也可以这样做。
$hashedpassword = bcrypt('plaintextpassword');
您可以将其输出保存到数据库表的密码字段中。
Fn Ref:bcrypt
check
方法:if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
参考文献:https://laravel.com/docs/5.1/hashing 编辑:如果这个答案对你有帮助,请不要忘记点赞 ;) - Nagendra Rao如果您想了解Laravel的工作原理,可以在Github上查看完整的类:https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
但基本上有三种PHP方法涉及到它:
$pasword = 'user-password';
// To create a valid password out of laravel Try out!
$cost=10; // Default cost
$password = password_hash($pasword, PASSWORD_BCRYPT, ['cost' => $cost]);
// To validate the password you can use
$hash = '$2y$10$NhRNj6QF.Bo6ePSRsClYD.4zHFyoQr/WOdcESjIuRsluN1DvzqSHm';
if (password_verify($pasword, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
//Finally if you have a $hash but you want to know the information about that hash.
print_r( password_get_info( $password_hash ));
哈希密码与Laravel 5.x的bcrypt密码相同,无需提供盐值和成本,它将采用默认值。
这些方法已在Laravel类中实现,但如果您想了解更多信息,请查看官方文档:http://php.net/manual/en/function.password-hash.php
$password = Input::get('password_from_user');
$hashed = Hash::make($password); // save $hashed value
// $user is database object
// $inputs is Input from user
if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) {
// Password is not matching
} else {
// Password is matching
}
以下是解决方案:
use Illuminate\Support\Facades\Hash;
$password = request('password'); // get the value of password field
$hashed = Hash::make($password); // encrypt the password
注意:在控制器的最开始使用第一行代码。最后但同样重要的是,在表单提交后想要操作数据的控制器函数内使用其余两行代码。愉快的编码:)
$hashed_password = Hash::make('Your Unhashed Password');
You can find more information: here
use Illuminate\Support\Facades\Hash;
您可以使用哈希函数来加密密码 => Hash::make('yourpassword');
您可以使用哈希函数来检查密码是否匹配 => Hash::check($password, $user->password);
public function bcryptGenerator($password)
{
return \bcrypt($password);
}
bcryptGenerator(123456);
// password = 123456
php artisan tinker
。例如:echo Hash::make('yourpassword')
。 - sinazaphp artisan tinker
然后bcrypt("yourpassword")
- panjeh