Я использую symfony 3.2.3, и я хочу ограничить доступ на тех же страницах. Хорошо, не проблема! Конфигурируя security.yml, все можно сделать, и на самом деле это работает в среде dev. Но, когда я переключаю свой сайт symfony в режиме производства, ничего не работает!Symfony security prod не работает
Переключение подталкивать команды:
- PHP кэш бен \ консоли: четкое --env = прод --no-отлаживать
У меня есть 4 страницы:
- /(можно получить доступ ко всем)
- /lucky (доступно для всех)
- /auth_a Субъективная (доступ только зарегистрированным пользователям)
- /бэкенд (доступ только пользователи ROLE_ADMIN)
Вот мой security.yml
безопасности:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_USER_LOGGED: IS_AUTHENTICATED_FULLY
ROLE_ADMIN: ROLE_USER_LOGGED
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
anonymous: ~
http_basic: ~
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout:
path: /logout
target:/
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/backend, roles: ROLE_ADMIN }
- { path: ^/auth_area, roles: IS_AUTHENTICATED_FULLY }
Наконец, все отлично работает dev, ничего не работает в prod: анонимный пользователь может получить доступ везде! ; (
Заранее спасибо
Глядя на ваш контроль доступа эти линии бесполезны, если у вас есть только 2 определенные области с ограниченным доступом: '- {путь:^/, роли: IS_AUTHENTICATED_ANONYMOUSLY}' и - '{путь: ^/login $, роль: IS_AUTHENTICATED_ANONYMOUSLY}'. Комментируйте эти 2 директивы, удалите кеш и попробуйте. PS: Я думаю, что первая директива всегда соответствует и вызывает вашу проблему. –