2012-08-27 29 views
5

Tôi có đơn giản trang đăng nhập và an ninh thiết lập như thế này:Các tệp tin giả trong symfony nằm sau tường lửa?

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 } 

Và trong tập tin base.html.twig của tôi, tôi có

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

Và kể cả những tập tin chỉ hoạt động nếu tôi được ủy quyền trong ứng dụng. Vì vậy, sau khi đăng nhập hệ thống tìm thấy tài sản này, nhưng trước khi nó không, và khi tôi làm theo liên kết tạo ra bởi assetic tôi chuyển hướng đến trang đăng nhập.

Theo quan điểm liên kết trông như thế này:

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

Tập tin này existin trên ổ đĩa, và khi gọi khi đăng nhập cho thấy CSS thích hợp khi chưa đăng nhập nó chuyển hướng tôi vào trang đăng nhập.

Trả lời

5

Điều này là bình thường. Bạn đang nói rằng mọi thứ trong thư mục gốc (mẫu:^/) nằm sau tường lửa chính và để truy cập các tệp này, bạn cần phải là quản trị viên (đường dẫn:^/, vai trò: ROLE_ADMIN). Vì vậy, bạn cần phải thiết lập quy tắc khác và nói rằng thư mục css có thể được truy cập nặc danh:

- { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY } 
+0

Tôi đặt cược này là giải pháp . –

+1

Đây là một giải pháp lame. Sử dụng tường lửa 'dev' được đề xuất trong câu trả lời khác. –

+0

Điều này là sai, giải pháp thực sự cho vấn đề là như trong câu trả lời của Bartosz Rychlicki – loostro

17

Ngoài ra tôi đã tìm thấy rằng điều này sẽ giúp nếu thêm vào security.yml:

firewalls: 
    dev: 
     pattern: ^/(_profiler|_wdt|css|js|assets) 
     security: false 
+0

Bạn không nên xóa nó khỏi 'security.yml' ngay từ đầu. : P –

+1

Lưu ý: phần dev trong tường lửa cần phải nằm trước phần chính hoặc bất kỳ phần nào bạn đặt tên cho phần bảo mật – Populus

Các vấn đề liên quan