Vse o WEB
Информация и размышления о Web технологиях

Что нового в Symfony 4.4: Миграции паролей

В Symfony 4.3 был анонсирован native password encoder для хеширования паролей наилучшим доступым способом шифрования на вашем сервере. По сути это автоматический выбор:

# config/packages/security.yaml

security:
    # ...
    encoders:
        App\Entity\User:
            algorithm: auto
            cost: 14

 

Этот алгоритм выбирается автоматически и может изменяться со временем, поэтому для разные пользователей будут использоваться разные алгоритмы. Технически это не проблема, потому что Symfony знает, как хэшировать и сравнивать каждый пароль, поэтому все пользователи смогут войти в систему. Однако было бы здорово, если бы все пользователи всегда использовали наилучший алгоритм.

В Symfony 4.4, когда пользователь успешно проходит аутентификацию, Symfony проверяет, доступен ли лучший алгоритм хеширования, и хеширует пароль, чтобы вы могли сохранить обновленный хеш. На практике при использовании entity user provider вам нужно только обновить репозиторий Doctrine, связанный с пользователями, и реализовать Symfony\Component\Security\Core\User\PasswordUpgraderInterface.

Этот интерфейс определяет единственный метод с именем upgradePassword(), который Symfony будет вызывать, когда пароль пользователя должен быть перекодирован.

<?php

// src/Repository/UserRepository.php

namespace App\Repository;

// ...
use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;

class UserRepository extends EntityRepository implements PasswordUpgraderInterface
{
    // ...

    public function upgradePassword(UserInterface $user, string $newEncodedPassword): void
    {
        // this code is only an example; the exact code will depend on
        // your own application needs
        $user->setPassword($newEncodedPassword);
        $this->getEntityManager()->flush($user);
    }
}

 

Читайте в документации об этой новой функции, чтобы узнать, как ее реализовать при использовании кастомного user provider или кастомного password encoder.

 

Оригинал статьи: https://symfony.com/blog/new-in-symfony-4-4-password-migrations

Наверх