2 回答
TA贡献1893条经验 获得超10个赞
Laravel立面提供安全的Bcrypt和Argon2哈希来存储用户密码。Hash
$password = Hash::make('plain-text-password');
该函数使用 Bcrypt 对给定值进行哈希处理。您可以将其用作立面的替代方案:bcryptHash
$password = bcrypt('plain-text-password');
我如何从我的身份验证中获取“盐”,以及从我的普通密码和“盐”中获取加密密码的工具。
根据哈希验证密码
该方法允许您验证给定的纯文本字符串是否与给定的哈希相对应。check
if (Hash::check('plain-text-password', $hashedPassword)) {
// The passwords match...
}
更新
您可以使用 Command 或创建路由来更改现有客户的“纯文本”密码。
创建命令应用程序/控制台/命令/更改密码.php
<?php
namespace App\Console\Commands;
use App\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
class ChangePassword extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'change-password';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Plain-text password changer';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$users = User::get();
foreach ($users as $user) {
if (Hash::needsRehash($user->password)) {
$user->password = Hash::make($user->password);
$user->save();
}
}
$this->info('Done..');
}
}
用法:
php artisan change-password
运行命令后,您可以尝试通过路由登录。Auth::routes()
或手动对用户进行身份验证
if (Auth::attempt($credentials)) {
// Authentication passed...
}
TA贡献1850条经验 获得超11个赞
您必须创建一个函数来首先将数据库密码更新为加密密码。
在 Web 上.php类似的东西,并在浏览器上访问 /password-updator
Route::get('/password_updator', function() {
$allusers = \DB::table('users')->get();
foreach($users as $user) {
$user->password = bcrypt($user->password);
$user->save();
}
});
在继续之前,请确保备份您的数据库!
或者,创建一个名为“password_hashed第一个 onn 用户”表的新列,并将其更新为试验。
https://laravel.com/docs/5.4/helpers#method-bcrypt
- 2 回答
- 0 关注
- 111 浏览
添加回答
举报