簡體   English   中英

如何從Symfony導入md5 Salt密碼到laravel 4

[英]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_pa​​ssword);

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM