Symfony2 - Форма входа появляется снова после входа в систему - PullRequest
13 голосов
/ 22 марта 2012

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

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

Ответы [ 2 ]

21 голосов
/ 25 марта 2012

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

1 голос
/ 22 марта 2012

Вы можете обновить вопрос с вашими маршрутами?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...