Новое в Symfony 7.2: Различные улучшения (часть 2)
Доступ к оценке надёжности пароля
Ограничение PasswordStrength проверяет, что заданный пароль достиг минимальной надёжности, заданной в ограничении. В Symfony 7.2 мы изменили видимость метода валидатора estimateStrength() с private на public.
Это позволяет получить доступ к оценённой стойкости пароля и отобразить её, например, в интерфейсе, чтобы пользователи могли лучше понять качество своих паролей.
Упрощённое модульное тестирование RequestStack
- Pull Request: [HttpFoundation] Add
$requestsparameter toRequestStackconstructor #57909 Alexander Schranz
При использовании RequestStack в модульных тестах раньше требовался код, подобный этому, для настройки запросов:
$requestStack = new RequestStack();
$requestStack->push(Request::create('/'));
$someCustomClass = new MyCustomClass($requestStack);В Symfony 7.2 мы упростили эту задачу, добавив конструктор RequestStack, принимающий массив запросов:
$someCustomClass = new MyCustomClass(new RequestStack([
Request::create('/'),
]));Действие по умолчанию в санитайзере HTML
В Symfony 7.2 мы добавили новый метод defaultAction() в компоненте HtmlSanitizer. Этот метод устанавливает действие по умолчанию для элементов, которые явно не разрешены или заблокированы:
use Symfony\Component\HtmlSanitizer\HtmlSanitizer;
use Symfony\Component\HtmlSanitizer\HtmlSanitizerAction;
$config = (new HtmlSanitizerConfig())
->defaultAction(HtmlSanitizerAction::Block)
->allowElement('p');
$sanitizer = new HtmlSanitizer($config);HtmlSanitizerAction — это PHP-перечисление с тремя вариантами: Drop (удаляет элемент и его дочерние элементы); Block (удаляет элемент, но сохраняет его дочерние элементы); Allow (сохраняет элемент).
Разрешение использования defaultNull() для BooleanNode
Текущий метод defaultNull() для BooleanNode, используемый при определении и обработке значений конфигурации, приводит null к значению true. В Symfony 7.2 мы обновили этот метод, чтобы можно было правильно определять nullable логические значения:
->booleanNode('enabled')->defaultNull()->end()Улучшенная анонимизация IP-адресов
- Pull Request: [HttpFoundation] Add optional
$v4Bytesand$v6Bytesparameters toIpUtils::anonymize()#58038 Alexandre Daubois
Класс IpUtils включает метод anonymize(), скрывающий часть IP-адреса для обеспечения конфиденциальности пользователя. В Symfony 7.2 мы добавили два новых аргумента к этому методу, чтобы можно было указать, сколько байт анонимизировать:
use Symfony\Component\HttpFoundation\IpUtils;
$ipv4 = '123.234.235.236';
// для адреса IPv4, можно скрыть от 0 до 4 байт
$anonymousIpv4 = IpUtils::anonymize($ipv4, v4Bytes: 3);
// $anonymousIpv4 = '123.0.0.0'
$ipv6 = '2a01:198:603:10:396e:4789:8e99:890f';
// для адреса IPv6, можно скрыть от 0 до 16 байт
$anonymousIpv6 = IpUtils::anonymize($ipv6, v6Bytes: 10);
// $anonymousIpv6 = '2a01:198:603::'Строковый узел конфигурации
- Pull Request: [Config] Add
StringNode#58428 Raffaele Carelle
При определении дерева конфигурации можно использовать множество типов узлов для значений конфигурации (булевы, целые числа, плавающие, перечисления, массивы и т. д.). Однако вы не могли напрямую определять строковые значения; они указывались как scalar узлы.
В Symfony 7.2 мы добавили тип узла string и метод stringNode(), позволяющий явно задавать значения конфигурации в виде строк:
$rootNode
->children()
// ...
->stringNode('username')
->defaultValue('root')
->end()
->stringNode('password')
->defaultValue('root')
->end()
->end()
;Улучшения в профайлере безопасности
- Pull Request: [Security] Display authenticators in the profiler even if they are all skipped #57369 Mathieu
- Pull Request: [SecurityBundle] Improve profiler’s authenticators tab #57525 Mathieu
- Pull Request: [SecurityBundle] Link to the profile the token was (de)authenticated #57692 Mathieu
В Symfony 7.2 панель безопасности Symfony Profiler получила несколько новых функций. Во-первых, была обновлена вкладка аутентификаторов. Ранее аутентификаторы, не поддерживающие запрос, не отображались:

Теперь, чтобы облегчить отладку, можно увидеть все аутентификаторы приложения. Если аутентификатор не поддерживает запрос, он будет помечен как "not supported":

При использовании stateful firewall вкладка "Token" для деаутентифицированных пользователей теперь включает ссылку на запрос, содержащий ранее аутентифицированного пользователя:

Вкладка "Authenticators" также была переработана для более наглядного отображения информации. Теперь она также показывает, является ли аутентификатор ленивым, и включает любое исключение, переданное в метод onAuthenticationFailure():

Это заключительная заметка в серии Новое в Symfony 7.2
. Мы надеемся, что вам понравилось, и вы открыли для себя новые возможности Symfony 7.2. Ознакомьтесь с руководством по обновлению минорных версий Symfony, чтобы узнать, как перейти на 7.2 с других версий 7.x. Тем временем мы уже начали работу над Symfony 7.3, релиз которого состоится в конце мая 2025 года.