Intereting Posts
Использовать PHP для генерации случайного десятичного числа до двух децимал phpseclib / jsbn: шифрование с открытым ключом в PHP, дешифрование с помощью закрытого ключа в jsbn Темы с пакетом igaster iframe не работает, когда я загружаю его на другую страницу PHP strtotime +1 месяц Как использовать Google Analytics для отслеживания открытых ставок, ставок по электронной почте? Зависимый выпадающий список в yii возвращает пустую строку даже после проверки PHP: Есть ли функция, которая преобразует строку даты в читаемый человеком формат? Запустить php-скрипт, хранящийся на сервере? Загрузите диаграмму Google из асинхронного ответа AJAX Код ошибки Freebase: 403 – предел пользовательской скорости превышен. Пожалуйста, зарегистрируйтесь получить доступ к модели из представления в codeigniter? Что такое единичные тесты и почему меня это беспокоит? Невозможно найти libmysqlclient под / usr. при создании PHP 5.2 из источника на Ubuntu 12.4 Предупреждение: preg_replace (): Неизвестный модификатор ']'

Symfony2 – установить security access_control для разрешения только анонимной аутентификации

Допустим, у меня есть свой блок access_control в security.yml :

 access_control: - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

В этом случае каждый может войти на homepage и homepage reset-password . Но я хотел бы разрешить эти страницы только для пользователей, анонимно анонимных. Полностью аутентифицированные пользователи должны получить 403 access denied error или 404 page not found .

Согласно документации с allow_if я должен быть ablo для создания ролевых выражений для определения доступа. Но если я сделаю это так:

 access_control: - { path: ^/reset-password, allow_if: "has_role('IS_AUTHENTICATED_ANONYMOUSLY') and not has_role('IS_AUTHENTICATED_FULLY')" } 

Теперь, следуя идее, чтобы полностью аутентифицированные пользователи (вход в систему) не должны были иметь доступ к странице, и анонимно аутентифицированные должны иметь доступ, но, к сожалению, ни один из пользователей не может получить к ней доступ …

Любые идеи, что мне не хватает?

ОБНОВИТЬ

Это заставило его работать, как предложено ниже, правильным ответом:

 - { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" } 

Вы уверены, что можете проверить IS_* используя has_role() ? Они действуют как роли, но они не роли. Возможно, поэтому он всегда возвращает false :

Похоже, вам лучше использовать is_anonymous() и is_authenticated() пользовательские функции в выражении allow_if .