2016-03-13 2 views
3

Я новичок в Symfony2. Теперь я пытаюсь завершить авторизацию, используя FOSUserBundle. У меня проблема, что авторизованный пользователь может получить доступ к странице входа в систему или странице регистрации. Могу ли я изменить это в конфигурациях, или я должен проверить его в контроллере? СпасибоКак запретить доступ для авторизованных пользователей в Symfony2?

PS Я имею в виду такую ​​роль в security.yml:

access_control: 
    - { path: /new, role: ROLE_USER } 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 
+0

Почему это проблема? – Putr

ответ

1

Вы можете решить эту проблему путем создания слушателя событий, который будет hook into the FOSUserBundle controllers. Для регистрации вы можете использовать событие fos_user.registration.initialize. В вашем слушателе вы можете проверить, не был ли пользователь уже аутентифицирован, если да, то переадресовывайте любой маршрут, который вам нравится (например, на главную страницу). См. Это answer, чтобы увидеть пример.

Для входа в систему (/login) вы можете переопределить значение по умолчанию FOSUserBundle SecurityController и проверить там, если пользователь аутентифицирован и выполняет перенаправление. См. Это example.

+0

Nice :) Спасибо, это то, что я искал. –

+0

Вы можете принять ответ тогда :) – takeit

Смежные вопросы