我有一个使用Laravel的Hash :: make()函数对用户密码进行哈希处理的网站。
我现在需要直接在DB(MySQL)中手动创建用户。有没有办法只使用原始SQL为用户创建哈希密码?
答案 0 :(得分:8)
您可以通过php artisan tinker
创建所需的密码:
php artisan tinker
。echo Hash::make('password')
; 您将看到哈希密码。即使使用sql查询,您也可以使用该密码执行任何操作。
答案 1 :(得分:3)
不是真的,我很害怕。 Laravel使用Bcrypt,它在MySQL中不可用。此外,在原始SQL中执行此操作是一种不好的做法,因为密码可能最终出现在服务器查询日志中。抱歉。 :/
答案 2 :(得分:0)
您可以使用Laravel中的DB Seed选项并以这种方式添加您的用户。 通过DB种子,您可以使用哈希方法来散列密码。
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
User::create(array(
'username' => 'user',
'password' => Hash::make('password')
));
}
}
但如果只能使用原始SQL,我就没有解决方案。
有关DB Seed的详细信息,请参阅以下页面。 http://laravel.com/docs/4.2/migrations#database-seeding
答案 3 :(得分:0)
否!
但你可以编写类似下面的函数
<?php
// Extend the base controller etc..
public function insertUsers( $passwordArray ){
$passwordArray = array("user1" => "pass1", "user2" => "pass2");
foreach ($passArray as $user => $pass) {
$password = Hash::make($pass); // Laravel function
dbQuery("INSERT INTO users (`user`, `password`) VALUES ($user, $password);
}
}