Symfony 2 - 使用HTTP身份验证对话框隐藏整个网站

dan*_*dan 5 security firewall symfony

我正在使用Symfony 2来建立一个网站.

工作正在进行中(因此我不希望用户或搜索引擎访问它),但我的客户希望看到我的进度.我认为一个简单的解决方案是使用Symfony 2安全功能提供的机制通过HTTP身份验证来保护整个网站.

我正在使用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
Run Code Online (Sandbox Code Playgroud)

因此,我试图在其上添加其他内容,以允许网站受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
Run Code Online (Sandbox Code Playgroud)

基本上我添加了whole_website_provider提供程序,whole_website防火墙和额外的access_control.
但这不起作用:当我访问网站时,我被重定向到登录表单,就是这样.

你知道我能做到吗以及怎么做?

注意:我不想使用任何Apache功能.

Alt*_*PHP 4

在我看来,您需要的不是通过 HTTP 身份验证来管理用户,而是通过 HTTP 身份验证来限制对您的站点的访问。不要为此使用 Symfony2 安全性。

保留 symfony2 应用程序的安全性,因为它将处于生产模式,并使用 apache .htaccess 来限制对该站点的访问。

文档位于http://httpd.apache.org/docs/2.2/howto/auth.html。您只需在 web/.htaccess 中添加一些指令,并按照文档中的说明创建一个用户/密码文件...