[英]How to import md5 salt passwords from symfony to laravel 4
舊的symfony系統的user表具有以下列:
email | algorithm | salt | password
--------------------+-------------+-----------------------------------+-------------
techytimo@gmail.com | sha1 | ea579e44dd150e5ba6680d6a3cee26b4 | f48598ad17acf18583d8499d7c6abc430929ae49
我使用laravel 4創建的新系統具有以下列:
email | password
--------------------+-----------------------------------------------------------
techytimo@gmail.com | $2y$08$Zz3rVIW4qJFd5IdTfzpw3OrH0HxGO8BrBxfonIQCvU33/yWQkUAe
如何在不讓用戶再次注冊的情況下將3000個帳戶及其密碼從舊系統導入到新系統?
同樣,使用laravel 4以相同格式加密我的密碼的方法也會有所幫助。
一種解決方法是在Laravel中擴展Auth模塊,以實現Symfony的哈希解決方案。
重寫Auth::attempt()
,以您想要的方式對密碼進行哈希處理即可。
與Hash::X
相同,您必須重寫Auth
類中的函數,以相同的方式對新用戶密碼進行哈希處理。
如何實現哈希方法:
創建一個文件夾名稱庫到應用程序庫中,然后,創建你的ServiceProvider:
庫\\ SymfonyHasherServiceProvider.php
use Illuminate\Support\ServiceProvider;
class SymfonyHasherServiceProvider extends ServiceProvider {
public function register()
{
$this->app->bind('hash', function()
{
return new SymfonyHasher;
});
}
}
然后,創建您的哈希器,該哈希器將是Symfony哈希方法的副本:
庫\\ SymfonyHasher.php
class SymfonyHasher implements Illuminate\Hashing\HasherInterface {
public function make($value, array $options = array())
{
/* make your hash here */
}
public function check($value, $hashedValue, array $options = array())
{
return $hashedValue == $this->make($value);
}
}
在app.php config的服務提供者數組中將“ Illuminate \\ Hashing \\ HashServiceProvider”替換為“ SymfonyHasherServiceProvider” ,然后添加“ app / libraries”以自動加載composer.json中的類映射
我不知道Symfony如何生成哈希,因此您必須搜索Symfony如何根據需要執行abd的實現。
式:
哈希::使(encryptFunc( '密碼'))==哈希::使(encrypted_password);
在Auth :: attempt之前,將$ userdata設置為:
$userdata = [
'username' => Input::get('username'),
'password' =>your_sha1_salt_function(Input::get('password'))
];
在您的user.php中
public function getAuthPassword()
{
return Hash::make($this->password);
}
在Auth :: attempt中將執行Hash :: check就像: Hash :: check(your_sha1_salt_function(Input :: get('password')),Hash :: make($ this-> password))
這樣,您將無需創建新的提供程序並更改配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.