symfony中的资产文件是否在防火墙后面?

Bar*_*cki 5 symfony assetic fosuserbundle symfony-2.1

我有简单的登录页面和安全设置如下:

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 }
Run Code Online (Sandbox Code Playgroud)

在我的base.html.twig文件中,我有

{% stylesheets '@BrStgCcBundle/Resources/public/css/bootstrap.css' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)

并且仅当我在应用程序中获得授权时才包括那些文件.所以在登录后系统找到了这个资产,但在没有之前它没有,当我按资产跟踪生成的链接时,我被重定向到登录页面.

在视图中链接如下所示:

<link rel="stylesheet" href="/app_dev.php/css/026adfc_bootstrap_1.css" />
Run Code Online (Sandbox Code Playgroud)

此文件存在于驱动器上,当记录时调用时,如果未记录则显示正确的CSS,则会将我重定向到登录页面.

Bar*_*cki 18

此外,我发现这有助于添加到security.yml:

firewalls:
    dev:
        pattern:    ^/(_profiler|_wdt|css|js|assets)
        security:   false
Run Code Online (Sandbox Code Playgroud)


Car*_*dos 5

这个是正常的.您说根目录下的所有内容(模式:^ /)都在主防火墙后面,要访问这些文件,您需要成为管理员(路径:^ /,角色:ROLE_ADMIN).所以你需要设置另一个规则,并说可以匿名访问css目录:

- { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY }
Run Code Online (Sandbox Code Playgroud)