Я использую 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: /
Что я могу сделать, чтобы он работал правильно (правильно зарегистрировался после входа в систему).
EDIT: Я лучше понимаю, что происходит: после входа в систему меня перенаправляют на домашнюю страницу = корневой адрес. Это сначала попадает в публичный брандмауэр и что я не воспринимаюсь как связанный.
Готово! Решение включает в себя свойство контекста брандмауэра, которое лучше описано здесь: Аутентификация нескольких брандмауэров 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
Ну, вы всегда можете жестко указать путь, который вы перенаправляете после входа в систему (в файле security.yml
). Вы можете прочитать больше здесь
security:
firewalls:
main:
form_login:
default_target_path: default_security_target