Новое в Symfony 7.2: Различные улучшения (часть 2)
Доступ к оценке надёжности пароля
Ограничение PasswordStrength
проверяет, что заданный пароль достиг минимальной надёжности, заданной в ограничении. В Symfony 7.2 мы изменили видимость метода валидатора estimateStrength()
с private
на public
.
Это позволяет получить доступ к оценённой стойкости пароля и отобразить её, например, в интерфейсе, чтобы пользователи могли лучше понять качество своих паролей.
Упрощённое модульное тестирование RequestStack
- Pull Request: [HttpFoundation] Add
$requests
parameter toRequestStack
constructor #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
$v4Bytes
and$v6Bytes
parameters 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 года.