Обход аутентификации на странице приветствия Symfony2 - PullRequest
1 голос
/ 28 марта 2012

То, как я работаю с аутентификацией в моем приложении, заключается в том, чтобы оставить 100% всего за аутентификацией, а затем указать определенные исключения.

К этим исключениям относятся страница входа и несколько других страниц. Все работает нормально, за исключением одной части: страницы «по умолчанию» или как вы хотите ее назвать. Я не хочу, чтобы люди заходили в систему, чтобы видеть главную страницу моего сайта, очевидно, но я не знаю, как сделать так, чтобы аутентификация не требовалась.

Вот мой маршрут для моей страницы приветствия:

_welcome:
    pattern:  /
    defaults: { _controller: VNNPressboxBundle:User:welcome }

Вот мой app/config/security.yml:

security:
    encoders:
        Symfony\Component\Security\Core\User\User:
            algorithm: sha1
            iterations: 1
            encode_as_base64: false
        VNN\PressboxBundle\Entity\User:
            algorithm: sha1
            iterations: 1
            encode_as_base64: false

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        administrators:
            entity: { class: VNNPressboxBundle:User, property: username }

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        secured_area:
            pattern:    ^/  
            form_login: ~
            logout: ~
            anonymous: ~
            http_basic:
                realm: "Secured Demo Area"

    access_control:
        - { path: ^/_welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/new, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/create, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/thanks, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/agreement, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/activate, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/signup, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/, roles: ROLE_USER }

Соответствующая часть, конечно, такова:

access_control:
    - { path: ^/_welcome, roles: IS_AUTHENTICATED_ANONYMOUSLY }

Несмотря на то, что у меня все настроено таким образом, я всегда загружаюсь на экран входа в систему, когда пытаюсь перейти на страницу приветствия (и под этим я подразумеваю http://myapp.com/app_dev.php вместо http://myapp.com/app_dev.php/user/welcome). Чего мне не хватает?

1 Ответ

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

Попробуйте сделать исключение для страницы по умолчанию, а затем установить всех дочерних элементов для аутентификации.Это должно поставить все позади аутентификации за исключением страницы по умолчанию.Это должно также работать с вашими исключениями.

- { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/*, role: IS_AUTHENTICATED_REMEMBERED }
...