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:
<code>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 </code>
Dlatego starałem się dodać coś innego, aby strona była chroniona przez uwierzytelnianie HTTP.
Zmieniłem plik na:
<code>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 </code>
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.