Я использую symfony2 с FOSUserBundle и пытаюсь правильно настроить брандмауэр.
Я хочу, чтобы основная часть моего сайта была недоступна анонимным пользователям. Домашняя страница ($ в общедоступном шаблоне) и некоторые другие должны быть доступны в соответствии с шаблоном.
С моей текущей конфигурацией, после входа в систему я перенаправлен на домашнюю страницу, но все еще как анонимный. Если я непосредственно наберу URL-адрес страницы, которая не может быть анонимной сразу после этого, я могу получить к ней доступ, и я вошел в систему (в профилировщике).
Моя конфигурация:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: /(login$|register|resetting|public|$)
anonymous: true
main:
pattern: ^/
anonymous: false
provider: main
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
logout:
path: fos_user_security_logout
target: /
Что я могу сделать, чтобы заставить его работать должным образом (зарегистрировано правильно после входа в систему).
РЕДАКТИРОВАТЬ:
Я лучше понимаю, что происходит: после входа в систему меня перенаправляют на домашнюю страницу = корневой адрес. Сначала он попадает в публичный брандмауэр, и поэтому я не вижу, что он подключен.
Ну, вы всегда можете жестко указать путь, который вы перенаправили после входа в систему (в вашем security.yml
файл). Вы можете прочитать больше Вот
security:
firewalls:
main:
form_login:
default_target_path: default_security_target
Готово! Решение включает свойство context межсетевого экрана, которое лучше описано здесь:
Аутентификация нескольких брандмауэров Symfony2 с помощью одной формы входа
Моя конфигурация теперь становится:
брандмауэры:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
guest:
pattern: /(user/login$|user/register|user/resetting|$)
anonymous: true
context: main_auth
main:
pattern: ^/(?!user/login$)
anonymous: false
provider: main
context: main_auth
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
logout:
path: fos_user_security_logout
target: /
remember_me:
key: "%secret%"lifetime: 86400 # 365 jours en secondes
path: /
domain: ~ # Prend la valeur par défaut du domaine courant depuis $_SERVER
oauth:
remember_me: true
resource_owners:
facebook: "/loginhwi/check-facebook"github: "/loginhwi/check-github"google: "/loginhwi/check-google"twitter: "/loginhwi/check-twitter"linkedin: "/loginhwi/check-linkedin"flickr: "/loginhwi/check-flickr"login_path: fos_user_security_login
check_path: fos_user_security_check
failure_path: fos_user_security_login
success_handler: foodmeup_user.handler_auth
oauth_user_provider:
service: fosubuser.provider