Symfony 2 - ukryj całą witrynę za pomocą okna dialogowego uwierzytelniania HTTP
Używam Symfony 2 do budowania strony internetowej.
Praca jest w toku (dlatego nie chcę, aby użytkownicy lub wyszukiwarki mieli do niej dostęp), ale mój klient chce zobaczyć moje postępy. Myślałem, że łatwym rozwiązaniem będzie ochrona całej strony internetowej za pomocą uwierzytelniania HTTP przy użyciu mechanizmu zapewnianego przez funkcję bezpieczeństwa Symfony 2.
Używam FOSUserBundle, ponieważ witryna będzie miała użytkowników, którzy muszą się zarejestrować i zalogować.
To jest mój security.yml, który działa świetnie:
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
Dlatego starałem się dodać coś innego, aby strona była chroniona przez uwierzytelnianie HTTP.
Zmieniłem plik na:
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
Zasadniczo dodałemwhole_website_provider
dostawcawhole_website
firewall i dodatkoweaccess_control
.
Ale to nie zadziałało: kiedy uzyskuję dostęp do strony, przekierowuję do formularza logowania, to wszystko.
Czy masz jakiś pomysł, czy mogę to zrobić i jak?
N.B .: Wolałbym nie używać do tego żadnej funkcji Apache.