Новое в Symfony 5.1: Улучшения HttpFoundation

Добавлен InputBag

Класс ParameterBag, определенный Symfony, похож на объектно-ориентированный массив, который хранит связанные значения и предоставляет такие методы, как get(), set(), has() и т. д. Symfony определяет специализированные классы ParameterBag для некоторых целей (например, FileBag для загруженных файлов. , ServerBag для заголовков HTTP и т. д.)

В Symfony 5.1 представили новый класс InputBag (который является наследником ParameterBag) для управления значениями, предоставляемыми пользователем (через суперглобальные переменные $_GET, $_POST, $_REQUEST и $_COOKIE).

Зашифрованные данные сеанса

Шифрование данных — один из рекомендуемых способов минимизировать ущерб, причиненный утечками безопасности. В Symfony 5.1 вы можете зашифровать содержимое сессии с помощью нового MarshallingSessionHandler, который, в свою очередь, использует маршаллер из компонента Cache.

Используйте следующую конфигурацию, чтобы определить данные, необходимые для шифрования сеансов:

Symfony\Component\Cache\Marshaller\SodiumMarshaller:
    decorates: 'session.marshaller'
    arguments:
        - ['%env(file:resolve:SODIUM_DECRYPTION_FILE)%']
        - '@.inner'

Поддержка всех директив HTTP Cache-Control

Symfony поддерживает наиболее часто используемые директивы HTTP Cache-control (etag, last_modified, max_age, public и т. д.). Однако не хватало некоторых из них, поэтому решили добавить поддержку всех директив управления кешем в Symfony 5.1:

  • etag
  • immutable
  • last_modified
  • max_age
  • must_revalidate
  • no_cache
  • no_store
  • no_transform
  • private
  • proxy_revalidate
  • public
  • s_maxage

Конструктор Cookie

Файлы cookie определяют множество параметров конфигурации. Вот почему именованный конструктор Cookie::create() определяет девять аргументов! В Symfony 5.1 представили несколько методов для превращения класса Cookie в объект создателя, если вы предпочитаете использовать его таким образом:

use Symfony\Component\HttpFoundation\Cookie;

// Before
$cookie = Cookie::create(
    'foo', 'bar', new \DateTime('+1 year'), '/', '.myfoodomain.com', true, true
);

// After
$cookie = Cookie::create('foo')
    ->withValue('bar')
    ->withExpires(new \DateTime('+1 year'))
    ->withDomain('.myfoodomain.com')
    ->withSecure(true)
    ->withHttpOnly(true);

Каждый метод withXXX() возвращает новый экземпляр объекта Cookie, поэтому вы также можете использовать их для изменения некоторого параметра существующего объекта cookie для создания нового.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *