Привет, друзья stackoverflow,
У меня есть экземпляр, который в Symfony2 я создал комплект безопасности (не использовался FOS USER BUNDLE), в котором, когда я вошел в систему, я пытаюсь снова открыть страницу входа в систему, и отображается форма входа. Не существует перенаправления на страницу по умолчанию, даже если я действительно вошел в систему. Как предотвратить эту регистрационную форму после входа в систему.
Ниже мой security.yml
ОБНОВЛЕНО
firewalls: main: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /login_check logout: path: /logout target: /login access_control: - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/centerreg, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/customredirect, roles: ROLE_USER } - { path: ^/admin/, roles: ROLE_ADMIN } - { path: ^/center/, roles: ROLE_CENTER } - { path: ^/client/, roles: ROLE_CLIENTADMIN } - { path: ^/examcenter/, roles: ROLE_EXAMCENTER } - { path: ^/tutor/, roles: ROLE_TUTOR } - { path: ^/evaluator/, roles: ROLE_EVALUATOR } - { path: ^/student/, roles: ROLE_STUDENT } - { path: ^/user/, roles: ROLE_USER }
Любая помощь будет заметна.
Symfony не будет автоматически делать это, потому что страница входа всегда доступна, как указано в security.yml
:
access_control: - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
Если вы не хотите, чтобы пользователи, прошедшие проверку подлинности, перешли на страницу входа в систему, вам необходимо вручную перенаправить их на страницу входа. Для этого перейдите к своему контроллеру для входа в систему и в начале функции loginAction () добавьте следующее:
public function loginAction() { if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) { // redirect authenticated users to homepage return $this->redirect($this->generateUrl('_homepage')); } //other code goes here... }
Это перенаправит аутентифицированных пользователей на вашу домашнюю страницу. Разумеется, замените «_homepage» на маршрутизацию имени страницы, к которой вы хотите перенаправить пользователей.
можете ли вы обновить вопрос своими маршрутами?
Я думаю, что у вас должен быть путь по умолчанию (например, /secure-area
), для которого требуется аутентификация, и некоторые другие (например, /secure-area/login
), которые представляют вашу регистрационную форму. Итак, в основном, возвращающийся посетитель не будет посещать /secure-area/login
но /secure-area
. Таким образом, он не будет показывать логин, но перезагрузит пользователя из сеанса …