Chúng tôi có một hệ thống nơi quản trị viên và người dùng chuẩn được xử lý bởi nhà cung cấp bảo mật riêng của họ. Điều này đã gây ra sự cố trong các trang quản trị vì quản trị viên không thể truy cập bất kỳ tệp hoặc hình ảnh nào nằm phía sau tường lửa của trang web chính trừ khi chúng cũng được đăng nhập vào trang web chính.Symfony 2: Truy cập tuyến đường có tường lửa với hai nhà cung cấp riêng biệt
Hình ảnh và tệp cần phải có thể truy cập được đối với tất cả người dùng và quản trị viên được xác thực, bất kể nhà cung cấp. Chúng được phục vụ thông qua bộ điều khiển cung cấp khả năng kiểm soát truy cập chi tiết hơn.
Có thể xác định nhiều nhà cung cấp để cho phép truy cập vào tuyến đường không?
Dưới đây là một phiên bản rút gọn security.yml hiện tại của chúng tôi:
security:
providers:
admin_user_db:
entity: { class: OurAdminUserBundle:AdminUser, property: username }
site_user_db:
entity: { class: OurSiteUserBundle:SiteUser, property: username }
firewalls:
admin_login:
pattern: ^/admin/login$
security: false
site_user_login:
pattern: ^/login
security: false
file_route:
pattern: ^/file
anonymous: ~
### We need to allow this route only for authorized users from
### either admin_user_db or site_user_db providers
admin_secured_area:
pattern: ^/admin
http_basic: ~
provider: admin_user_db
form_login:
check_path: /admin/login_check
login_path: /admin/login
logout:
path: /admin/logout
target:/
site_secured_area:
pattern: .*
http_basic: ~
provider: site_user_db
form_login:
check_path: /check_login
login_path: /login
failure_path: /login
failure_forward: false
logout:
path: /logout
target:/
Cảm ơn bạn đã trả lời, chúng tôi có thể thiết lập 'ChainProvider' với các hướng dẫn này (mặc dù tôi nghĩ rằng cú pháp có một chút khác biệt trong phiên bản Symfony của chúng tôi). Cuối cùng chúng tôi đã kết thúc việc bỏ qua 'AdminUser' và sử dụng các vai trò thay vì @jperovic gợi ý, vì chúng tôi nhận ra rằng các nhà cung cấp riêng biệt không thực sự cần thiết trong kịch bản của chúng tôi. – Kaivosukeltaja