Symfony 2 -скрыть весь веб-сайт с помощью диалогового окна аутентификации HTTP

Я использую Symfony 2 для создания веб-сайта.

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

Я использую FOSUserBundle, так как на веб-сайте будут пользователи, которым необходимо зарегистрироваться и войти в систему.

Это мой файл security.yml, который отлично работает.:

security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager

    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true     

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
        - { path: ^/account, role: IS_AUTHENTICATED_FULLY }

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

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

security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager
        whole_website_provider:
            users:
                ryan:  { password: ryanpass, roles: 'ROLE_USER' }           

    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
        whole_website:
            pattern: ^/
            anonymous: ~
            http_basic:
                realm: "Secured Demo Area"       

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
        - { path: ^/account, role: IS_AUTHENTICATED_FULLY }
        - { path: ^/, role: ROLE_USER }

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

. В основном я добавил поставщика whole_website_provider, брандмауэра whole_websiteи дополнительного access_control.
Но это не сработало :, когда я захожу на веб-сайт, меня перенаправляют на форму входа, вот и все.

Вы не представляете, смогу ли я это сделать и как?

Н.Б. :Я бы предпочел не использовать для этого какие-либо функции Apache.

5
задан dan 7 May 2012 в 11:57
поделиться