如何将md5 salt密码从symfony导入laravel 4

Mwi*_*Tim 0 md5 sha1 symfony laravel laravel-4

旧symfony系统中的用户表具有以下列:

email               | algorithm   | salt                              | password
--------------------+-------------+-----------------------------------+-------------
techytimo@gmail.com | sha1        | ea579e44dd150e5ba6680d6a3cee26b4  | f48598ad17acf18583d8499d7c6abc430929ae49
Run Code Online (Sandbox Code Playgroud)

我使用laravel 4创建的新系统包含以下列:

email               | password
--------------------+-----------------------------------------------------------
techytimo@gmail.com | $2y$08$Zz3rVIW4qJFd5IdTfzpw3OrH0HxGO8BrBxfonIQCvU33/yWQkUAe
Run Code Online (Sandbox Code Playgroud)

如何将3000个帐户的密码从旧系统导入新系统而无需用户再次注册?

另外,使用相同格式的laravel 4加密我的密码的方法也会有所帮助.

net*_*n73 6

解决方法是在Laravel中扩展Auth模块,以实现Symfony的哈希解决方案.
重写Auth::attempt(),以您希望的方式散列您的密码,将起作用.
同样Hash::X,您必须在Auth类中重写一个函数以同样的方式散列新用户密码.


如何实现哈希方法:

在文件夹名称库中创建一个app,然后创建你的ServiceProvider:

库\ SymfonyHasherServiceProvider.php

use Illuminate\Support\ServiceProvider;

class SymfonyHasherServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('hash', function()
        {
            return new SymfonyHasher;
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,创建你的hasher,这将是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);
    }

}
Run Code Online (Sandbox Code Playgroud)

替换"照亮\散列\ HashServiceProvider""SymfonyHasherServiceProvider"在服务提供商阵列中app.php配置,再加入"应用/库"自动装载类映射在composer.json

我不知道Symfony是如何制作哈希的,所以你必须搜索Symfony如何使哈希abd在你需要的时候实现它.