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 %}

并且仅当我在应用程序中获得授权时才包含这些文件。因此,登录后系统会找到此资产,但之前没有,当我按照资产生成的链接时,我被重定向到登录页面。

在视图中,链接如下所示:

<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 回答