Документация для разработчиков
Темная тема

ActionFilter

Фильтры - это обработчики, которые выполняются до или после Action. С их помощью можно отклонить выполнение действия, либо повлиять на результат действия.

Существует два типа фильтров:

  • prefilter - выполняется до запуска Action. Может отклонить выполнения действия.
  • postfilter - выполняется после запуска Action. Может изменить результат выполнения действия.

\Bitrix\Main\Engine\ActionFilter\HttpMethod

Проверяет по какому http методу запускается действие и блокирует выполнение действия, если метод не был перечислен.

Метод Параметр и описание С версии
__construct(
   array $allowedMethods = [self::METHOD_GET]
)
$allowedMethods {array}. Список допустимых http методов. По умолчанию GET.

\Bitrix\Main\Engine\ActionFilter\Authentication

Проверяет аутентифицирован ли пользователь и блокирует выполнение действия, если проверка не прошла, установив http status 401. Может выполнить редирект на страницу авторизации при необходимости.

Метод Параметр и описание С версии
__construct(
   $enableRedirect = false
)
$enableRedirect {bool}. Включает или отключает автоматический редирект на страницу авторизации, если проверка не прошла успешно. По умолчанию false.

\Bitrix\Main\Engine\ActionFilter\Csrf

Проверяет наличие и корректность csrf-токена и блокирует выполнение действия, если проверка не прошла.

Метод Параметр и описание С версии
__construct(
   $enabled = true,
   $tokenName = 'sessid',
   $returnNew = true
)
  • $enabled {bool} Включает или отключает проверку на токен. По умолчанию true.
  • $tokenName {string} Имя, по которому передается значение токена. Используется для поиска в $_GET, $_POST. По умолчанию sessid.
  • $returnNew {bool} Сигнализирует нужно ли возвращать новое значение токена, если проверка прошла неуспешно. Заметим, что возврат осуществляется через \Bitrix\Main\Error::$customData. По умолчанию true.

\Bitrix\Main\Engine\ActionFilter\CloseSession

Выполнит session_write_close() перед выполнением действия. Будьте внимательны при использовании данного фильтра! Так как после закрытия сессии, все внесенные в неё изменения не будут сохранены. Для понимания работы сессий, стоит ознакомиться с документацией на php.net.

Метод Параметр и описание С версии
__construct(
   $enabled = true
)
$enabled {bool}. Включает или отключает работу фильтра. По умолчанию true.

\Bitrix\Main\Engine\ActionFilter\Scope

Позволяет заблокировать определенные действия для указанного scope, например, можно открыть только определенные действия для rest, а все остальные будут доступны только для ajax.

use \Bitrix\Main\Engine\ActionFilter\Scope;

new Scope(Scope::NOT_REST); //разрешаем везде, кроме rest
new Scope(Scope::AJAX); //разрешаем только в ajax
Метод Параметр и описание С версии
__construct(
   $scopes
)
$scopes {int} Перечисление допустимых scopes. Для проверки используются битовые маски. Доступные варианты можно найти в константах класса \Bitrix\Main\Engine\ActionFilter\Scope;

\Bitrix\Main\Engine\ActionFilter\Cors

Устанавливает заголовки ответа для управления CORS.

Метод Параметр и описание С версии
__construct(
   string $origin = null,
   bool $credentials = false
)
  • $origin {string} Используется для установки заголовка Access-Control-Allow-Origin. По умолчанию null.
  • $credentials {bool} Если true, то устанавливается заголовок Access-Control-Allow-Credentials. По умолчанию false.

\Bitrix\Main\Engine\ActionFilter\ContentType

Фильтр разрешает выполнять действие, только в случае допустимых content-type в запросе. При работе с application/json будет автоматически зарегистрирован объект \Bitrix\Main\Engine\JsonPayload, который можно внедрять в параметры через параметры аякс-действия.

Метод Параметр и описание С версии
__construct(
   array $allowedTypes
)
$allowedTypes {array}. Перечисление допустимых content-type. Например, ['application/json'].

\Bitrix\Main\Engine\ActionFilter\PostDecode

Фильтр перекодирует данные из POST-запроса, если внутренняя кодировка проекта отличается от utf-8.


\Bitrix\Intranet\ActionFilter\UserType

Фильтр проверяет, принадлежит ли текущий пользователь к разрешенному списку типов пользователей. Например, если нужно разрешить доступ только пользователям экстранета и интранета.

При использовании убедитесь, что подключен модуль intranet.

Метод Параметр и описание С версии
__construct(
   (array $allowedUserTypes)
)
$allowedUserTypes {array}. Перечисление допустимых типов пользователей. Например, ['extranet', 'intranet'].

\Bitrix\Intranet\ActionFilter\IntranetUser

Фильтр проверяет, является ли текущий пользователь интранет-пользователем. Это упрощенный вариант случая UserType.

При использовании убедитесь, что подключен модуль intranet.


© «Битрикс», 2001-2024, «1С-Битрикс», 2024