Middleware access-control
Middleware access-control - это механизм проверки прав доступа,
который срабатывает перед выполнением запроса. Он определяет,
может ли текущий пользователь обратиться к указанному маршруту.
Настройка выполняется в файле config/packages/security.yaml
в секции access_control. Каждое правило содержит параметры
path, roles, allow_if и другие.
Синтаксис
security:
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/user, roles: ROLE_USER }
- { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }
Пример
Давайте ограничим доступ к разделу /admin только для пользователей с ролью ROLE_ADMIN:
security:
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
Если пользователь без роли ROLE_ADMIN попытается открыть
/admin/dashboard, Symfony вернёт ошибку 403.
Пример
Давайте разрешим доступ к главной странице только аутентифицированным пользователям, а к странице входа - всем:
security:
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
Теперь любой запрос к корню сайта требует авторизации.
Пример
Давайте используем allow_if для доступа по IP-адресу:
security:
access_control:
- { path: ^/internal, allow_if: "request.getClientIp() == '127.0.0.1'" }
Доступ к разделу /internal будет разрешён только с локального адреса.
Смотрите также
-
класс
Passport,
который представляет собой паспорт аутентификации -
класс
UserBadge,
который хранит идентификатор пользователя -
класс
SelfValidatingPassport,
который проверяет пользователя без пароля -
класс
firewall,
который настраивает брандмауэр безопасности