The*_*pha 154
使用Bcrypt哈希密码Laravel:
$password = Hash::make('yourpassword');
Run Code Online (Sandbox Code Playgroud)
这将创建一个哈希密码.您可以在控制器中甚至在模型中使用它,例如,如果用户使用POST方法使用表单向控制器提交密码,那么您可以使用以下方法对其进行散列:
$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);
Run Code Online (Sandbox Code Playgroud)
这里$hashed将包含散列密码.基本上,你会创建/注册新用户时做到这一点,因此,举例来说,如果用户提交的细节,例如,name,email,username和password等使用的形式,那么你将数据插入到数据库之前,你会散列验证数据后的密码.有关更多信息,请阅读文档.
更新:
$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
Run Code Online (Sandbox Code Playgroud)
所以,你将插入$hashedPassword到数据库中.希望,现在很清楚,如果你仍然感到困惑,那么我建议你阅读一些教程,在laracasts.com和tutsplus.com上观看一些屏幕演员并阅读一本书Laravel,这是一本免费的电子书,你可以下载它.
更新:因为OP想要使用Laravel手动加密密码Hash而没有任何类或形式,所以这是使用artisan tinker命令提示符的另一种方法:
Laravel安装(项目的根目录)cd <directory name>,然后按命令提示符/终端输入php artisan tinker并按回车键echo Hash::make('somestring');// Also one can use bcrypt
$password = bcrypt('JohnDoe');
Run Code Online (Sandbox Code Playgroud)
Zub*_*ain 27
我知道你的痛苦兄弟。您只需要密码哈希来替换数据库中的密码列字段。您可以从 Laravel Tinker 轻松获取它。\n在任何 Laravel 项目命令行中输入:
\n\xe2\x9d\xaf php artisan tinker\nPsy Shell v0.9.12 (PHP 7.4.27 \xe2\x80\x94 cli) by Justin Hileman\n>>> echo Hash::make('123456');\n$2y$10$JHK.2MTc9ORMmmlqoF.gg.SwDLnevVSj1oreHParu5PvcPEDOWqe6\nRun Code Online (Sandbox Code Playgroud)\n然后复制您的用例的哈希传递。
\nRao*_*Rao 14
Laravel 5使用bcrypt.所以,你也可以这样做.
$hashedpassword = bcrypt('plaintextpassword');
Run Code Online (Sandbox Code Playgroud)
您可以将其输出保存到数据库表的密码字段中.
Fn参考:bcrypt
$password = Input::get('password_from_user');
$hashed = Hash::make($password); // save $hashed value
Run Code Online (Sandbox Code Playgroud)
// $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
}
Run Code Online (Sandbox Code Playgroud)
Laravel Hash外观提供安全的Bcrypt哈希存储用户密码。
基本用法需要两件事:
首先在文件中包含Facade
use Illuminate\Support\Facades\Hash;
Run Code Online (Sandbox Code Playgroud)
并使用MakeMethod生成密码。
$hashedPassword = Hash::make($request->newPassword);
Run Code Online (Sandbox Code Playgroud)
当您想要匹配哈希字符串时,可以使用以下代码:
Hash::check($request->newPasswordAtLogin, $hashedPassword)
Run Code Online (Sandbox Code Playgroud)
您可以通过下面的Laravel文档链接了解更多有关散列的信息:https ://laravel.com/docs/5.5/hashing
小智 6
如果您想了解 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 ));
Run Code Online (Sandbox Code Playgroud)
散列密码与 laravel 5.x bcrypt 密码相同。无需提供盐和成本,它将采用其默认值。
这些方法已经在laravel类中实现了,但是如果你想了解更多请查看官方文档:http : //php.net/manual/en/function.password-hash.php