将旧用户md5迁移到FOS用户

时间:2016-03-12 15:50:50

标签: php mysql symfony fosuserbundle symfony-2.3

我有一个应用程序,我想在Symfony3上迁移,但我有一些问题。 正如标题所说,我想在Symfony3中迁移用户表。 我使用FOS用户软件包登录,但我的遗留用户没有盐。 密码使用md5加密进行加密。我没有看到关于这个问题的解释,我遵循了这个解释,但这对我没有用。 这是我的代码。

这是security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: 
            id: trgovina_lea.legacy_encoder

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                # if you are using Symfony < 2.8, use the following config instead:
                # csrf_provider: form.csrf_provider

            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

这是自定义编码器服务

use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface;

class LegacyEncoder implements PasswordEncoderInterface
{
    public function __construct() {
    }

    public function encodePassword($raw, $salt) {
        return md5($raw);
    }

    public function isPasswordValid($encoded, $raw, $salt) {
        return $encoded === $this->encodePassword( $raw, $salt );
    }

}

所以我需要使用没有盐的md5密码登录用户。

我看到了一些这样的例子: https://stackoverflow.com/a/24680752

但这也不能解决我的问题。它总是返回无效的凭证。

你们这些人

0 个答案:

没有答案