Tôi đang sử dụng Symfony 2 để xây dựng trang web.Symfony 2 - ẩn toàn bộ trang web bằng hộp thoại Xác thực HTTP
Công việc đang diễn ra (do đó tôi không muốn người dùng hoặc công cụ tìm kiếm truy cập vào nó) nhưng khách hàng của tôi muốn thấy tiến trình của tôi. Tôi đã nghĩ một giải pháp dễ dàng là bảo vệ toàn bộ trang web bằng xác thực HTTP bằng cách sử dụng cơ chế được cung cấp bởi chức năng bảo mật của Symfony 2.
Tôi đang sử dụng FOSUserBundle vì trang web sẽ có người dùng cần đăng ký và đăng nhập.
Đây là security.yml của tôi, mà các công trình lớn:
security:
providers:
fos_userbundle:
id: fos_user.user_manager
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
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: ^/admin/, role: ROLE_ADMIN }
- { path: ^/account, role: IS_AUTHENTICATED_FULLY }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
Vì vậy, tôi đã cố gắng để thêm một cái gì đó khác trên đầu trang của nó, để cho phép các trang web để được bảo vệ bởi HTTP Authentication.
Tôi đã thay đổi tập tin để:
security:
providers:
fos_userbundle:
id: fos_user.user_manager
whole_website_provider:
users:
ryan: { password: ryanpass, roles: 'ROLE_USER' }
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
whole_website:
pattern: ^/
anonymous: ~
http_basic:
realm: "Secured Demo Area"
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/account, role: IS_AUTHENTICATED_FULLY }
- { path: ^/, role: ROLE_USER }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
Về cơ bản tôi đã thêm các nhà cung cấp whole_website_provider
, các whole_website
tường lửa và thêm một access_control
.
Nhưng điều đó không hiệu quả: khi tôi truy cập trang web, tôi được chuyển hướng đến biểu mẫu đăng nhập, đó là nó.
Bạn có bất kỳ ý tưởng nào cho dù tôi có thể làm điều đó hay không?
N.B .: Tôi không muốn sử dụng bất kỳ tính năng Apache nào cho nó.
Điều gì sẽ xảy ra nếu bạn đặt tường lửa 'toàn bộ trang web 'trước? Đừng quên xóa bộ nhớ cache. – gilden
@gilden: hiển thị hộp xác thực, ít nhất nhưng tôi không thể tìm cách xác thực chính xác. – dan
Tôi xin lỗi tôi không có thời gian để đưa ra lời khuyên thích hợp, nhưng tôi đoán bạn cũng cần phải đặt rõ ràng nhà cung cấp người dùng cho 'toàn bộ trang web' hoặc Sf2 sẽ sử dụng giá trị đầu tiên. Những gì PéCé đang đề xuất hoạt động là tốt, tôi đoán, nhưng được phần nào ocd, tôi sẽ đưa vào các giải pháp khó khăn, nhưng thanh lịch hơn :) – gilden