5

シンプルなログイン ページとセキュリティを次のように設定しています。

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            use_referer: true
            always_use_default_target_path: true
            default_target_path: /
        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: ^/, role: ROLE_ADMIN }

そして、私のbase.html.twigファイルには

{% stylesheets '@BrStgCcBundle/Resources/public/css/bootstrap.css' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

これらのファイルを含めることは、アプリで承認されている場合にのみ機能します。したがって、ログイン後、システムはこのアセットを見つけますが、そうする前には見つけられず、assetic によって生成されたリンクをたどると、ログイン ページにリダイレクトされます。

ビューでは、リンクは次のようになります。

<link rel="stylesheet" href="/app_dev.php/css/026adfc_bootstrap_1.css" />

このファイルはドライブに存在し、ログに記録されたときに呼び出されると、ログに記録されていないときに適切な CSS が表示され、ログイン ページにリダイレクトされます。

4

2 に答える 2

18

また、これを追加すると役立つことがわかりましたsecurity.yml

firewalls:
    dev:
        pattern:    ^/(_profiler|_wdt|css|js|assets)
        security:   false
于 2012-08-28T08:15:58.200 に答える
5

これは正常です。ルート ディレクトリ (パターン: ^/) の下にあるものはすべてメイン ファイアウォールの背後にあり、これらのファイルにアクセスするには管理者 (パス: ^/、役割: ROLE_ADMIN) である必要があると言っています。したがって、別のルールを設定して、css ディレクトリに匿名でアクセスできるようにする必要があります。

- { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY }
于 2012-08-27T21:24:45.510 に答える