Подтвердить что ты не робот

Symfony2- Форма входа снова появляется после входа в систему

Привет, друзья 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 }

Любая помощь будет заметна.

4b9b3361

Ответ 1

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' на маршрут имени страницы, на которую вы хотите перенаправить пользователей.

Ответ 2

можете ли вы обновить вопрос с помощью своих маршрутов?

Я думаю, что у вас должен быть путь по умолчанию (например, /secure-area), для которого требуется аутентификация и некоторые другие (например, /secure-area/login), которые представляют вашу регистрационную форму. Итак, в основном, возвращающийся посетитель будет не посещать /secure-area/login, но /secure-area вместо этого. Таким образом, он не будет показывать логин, но перезагрузит пользователя из сеанса...