lvicainne/fallback-password-encoder-bundle

提供密码编码器堆栈以支持旧版用户数据的包。 / 分支

1.0.3 2017-09-02 14:14 UTC

This package is auto-updated.

Last update: 2024-08-29 04:39:55 UTC


README

关于

此Symfony2包提供了一种用于与friendsofsymfony/user-bundle包(FOSUserBundle)一起使用的密码编码策略。它需要Symfony安全组件版本>=2.3.6。

使用场景可能是当存在使用易破解算法(如MD5)散列的旧版用户数据时。您想使用bcrypt,但这意味着要所有用户重置他们的密码。此包允许您声明一个编码器堆栈,这样您可以在同一时间内运行主算法和一组后备算法。使用旧算法散列密码的用户将在下次登录时将存储的哈希值透明地更新到新的、更安全的哈希值。

当前限制:由于这些编码器未声明为服务,因此包目前无法与Symfony框架编码器一起工作。

免责声明

此软件的存在绝不能被解释为对该策略本身的认可。在您的系统中使用相同的安全算法对所有密码是更好的选择。然而,您可能会认为这种策略最适合您的具体情况——通常您不希望对用户基础强制执行密码重置。

安装

将MarkupFallbackPasswordEncoderBundle添加到composer.json中

{
    "require": {
        "markup/fallback-password-encoder-bundle": "@dev"
    }
}

将MarkupFallbackPasswordEncoderBundle添加到AppKernel.php中

    public function registerBundles()
    {
        $bundles = array(
            ...
            new Markup\FallbackPasswordEncoderBundle\MarkupFallbackPasswordEncoderBundle(),
        );
        ...
    }

最后,使用Composer安装包

$ php composer.phar update markup/fallback-password-encoder-bundle

用法

配置示例

服务ID被声明为主要的编码器——这是密码应散列的规范编码器。然后定义一组后备编码器,这些编码器用于使用旧算法检查密码。如果您不使用FOSUserBundle提供的fos_user.util.user_manipulator服务,则需要注册操纵器。(此服务仍将用于此操纵器列表中未出现的类别的用户作为后备。)

markup_fallback_password_encoder:
    encoders:
        primary:
            id: security.encoder.blowfish
        fallbacks:
            - id: my_legacy_compat.encoder.md5.saltless
    manipulators:
        My\Bundle\CustomerBundle\Entity\Customer: my_customer.util.manipulator
        My\Bundle\AdminUserBundle\Entity\AdminUser: my_admin_user.util.manipulator

在您的security.yml文件中,指定后备编码器为markup_fallback_password_encoder

security:
    encoders:
        My\Bundle\CustomerBundle\Entity\Customer:
            id: markup_fallback_password_encoder
        My\Bundle\AdminUserBundle\Entity\AdminUser:
            id: markup_fallback_password_encoder

许可证

在MIT许可证下发布。见LICENSE。

Build Status