Sto utilizzando Symfony 2 per creare un sito web.Symfony 2 - nasconde l'intero sito Web con una finestra di dialogo di autenticazione HTTP
Il lavoro è in corso (quindi non voglio che utenti o motori di ricerca accedano ad esso) ma il mio cliente vuole vedere i miei progressi. Stavo pensando che una soluzione facile era quella di proteggere l'intero sito web con l'autenticazione HTTP utilizzando il meccanismo fornito dalla funzionalità di sicurezza di Symfony 2.
Sto utilizzando FOSUserBundle poiché il sito Web avrà utenti che devono registrarsi e accedere.
Questo è il mio security.yml, che funziona alla grande:
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
quindi stavo cercando di aggiungere qualcosa su di esso, per consentire al sito web per essere protetti da autenticazione HTTP.
Ho cambiato il file:
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
Fondamentalmente ho aggiunto il fornitore whole_website_provider
, il firewall whole_website
e un extra access_control
.
Ma questo non ha funzionato: quando accedo al sito web, vengo reindirizzato al modulo di accesso, il gioco è fatto.
Hai qualche idea se posso farlo e come?
N.B .: Preferirei non utilizzare alcuna funzione Apache per questo.
Cosa succede se prima metti il firewall 'whole_website'? Non dimenticare di svuotare la cache. – gilden
@gilden: mostra la casella di autenticazione, almeno ma non riesco a trovare un modo per autenticare correttamente. – dan
Mi dispiace, non ho il tempo di dare un consiglio adeguato, ma suppongo che sia necessario impostare in modo esplicito il provider dell'utente per 'whole_website' o Sf2 userà il primo. Ciò che suggerisce PéCé funziona anche, suppongo, ma essendo un po 'ocd, vorrei prendere la soluzione difficile, ma più elegante :) – gilden