首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将md5盐密码从symfony导入到laravel 4

如何将md5盐密码从symfony导入到laravel 4
EN

Stack Overflow用户
提问于 2013-08-13 08:35:04
回答 2查看 5K关注 0票数 0

来自旧symfony系统的user表有以下列:

代码语言:javascript
复制
email               | algorithm   | salt                              | password
--------------------+-------------+-----------------------------------+-------------
techytimo@gmail.com | sha1        | ea579e44dd150e5ba6680d6a3cee26b4  | f48598ad17acf18583d8499d7c6abc430929ae49

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

代码语言:javascript
复制
email               | password
--------------------+-----------------------------------------------------------
techytimo@gmail.com | $2y$08$Zz3rVIW4qJFd5IdTfzpw3OrH0HxGO8BrBxfonIQCvU33/yWQkUAe

如何在不让用户再次注册的情况下,将具有密码的3000帐户从旧系统导入到新系统?

另外,用相同格式的laravel 4加密我的密码也会有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-13 09:27:32

一个解决办法是在Laravel中扩展Auth模块,从Symfony实现您的散列解决方案。

重写Auth::attempt(),以您想要的方式散列您的密码,将起作用。

同样,对于Hash::X,您必须在Auth类中重写一个函数,以同样的方式散列新用户密码。

如何实现哈希方法:

在文件夹名为ServiceProvider应用程序中创建一个库,然后创建您的

libraries\SymfonyHasherServiceProvider.php

代码语言:javascript
复制
use Illuminate\Support\ServiceProvider;

class SymfonyHasherServiceProvider extends ServiceProvider {

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

}

然后,创建hasher,这将是Symfony散列方法的副本:

libraries\SymfonyHasher.php

代码语言:javascript
复制
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);
    }

}

将'Illuminate\Hashing\HashServiceProvider'替换为'SymfonyHasherServiceProvider'在app.php config中的服务提供者数组中,然后将'app/libraries'添加到composer.json中的autoload类映射中

我不知道Symfony是如何制作散列的,所以您必须搜索Symfony如何根据需要实现散列。

票数 6
EN

Stack Overflow用户

发布于 2013-10-16 08:49:16

公式:

Hash::make(encryptFunc('password'))==Hash::make(encrypted_password);

在Auth::尝试之前,将$userdata设置为:

代码语言:javascript
复制
$userdata = [
                'username'  => Input::get('username'),
                'password'  =>your_sha1_salt_function(Input::get('password'))

                ];

在你的user.php里

代码语言:javascript
复制
public function getAuthPassword()
    {

        return Hash::make($this->password);
    }

在Auth::尝试将执行哈希::检查类似:Hash::check(your_sha1_salt_function(Input::get('password')),哈希::make($this->)

这样,您就不需要创建新的提供程序并更改配置。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18204299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档