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 ) |
|
\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 ) |
|
\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
.
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
Пример использования:
| ||
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.