Symfony2 http_basic de sécurité rejette des informations d'identification valides
J'utilise Symfony Standard 2.0.0BETA1 et a essayé de configurer http_basic authentification exactement le même que dans ce chapitre de livre
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
main:
users:
foo: { password: testing, roles: ROLE_USER }
firewalls:
main:
pattern: /.*
http_basic: true
logout: true
access_control:
- { path: /.*, role: ROLE_USER }
Problème, c'est quand j'essaye d'ouvrir une page et je soumettre le nom d'utilisateur "toto" et le mot de passe "test" il simplement des boucles et pour me demander des informations d'identification à l'infini ou de l'erreur d'affichage de la page.
Étapes pour reproduire le problème:
- Copie de la configuration de sécurité de http://symfony.com/doc/current/book/security/overview.html#configuration et passé à la sécurité.fichier yml
- De rafraîchissement de la page d'accueil de l'application
- Entrer des informations d'identification valides
Comportement attendu est à voir en page d'accueil, mais plutôt des informations d'identification de l'invite est affichée.
Personne ne sait pourquoi cela arrive et comment le résoudre?
OriginalL'auteur sbgoran | 2011-05-13
Vous devez vous connecter pour publier un commentaire.
L'authentification http de base est rompu avec PHP comme cgi/fastCGI sous Apache
Il y a une solution:
app_dev.php
web/.htaccess
Source: symfony problème
OriginalL'auteur Teo.sk
Le problème est que vous restreint l'accès à
/.*
, ce qui signifie que tous les chemins, seuls les utilisateurs ayant le rôle ROLE_USER.Dire votre login chemin est
/login
, l'utilisateur tente d'accéder à un tout autre chemin et est redirigé vers la de login chemin. Le chemin de connexion (/login
) sera compensée par le contrôle d'accès modèle/.*
. L'utilisateur sera alors refusé l'accès car il n'a pas le rôle ROLE_USER droit maintenant. Le composant de sécurité va rediriger l'utilisateur vers le formulaire de connexion de sorte qu'il peut s'authentifier pour obtenir le rôle, qui est limité, et redirige l'utilisateur vers le formulaire de connexion pour authentifier et ainsi de suite.Voici une solution simple pour éviter ce problème. Vous pouvez autoriser l'accès au formulaire de connexion à l'utilisateur anonyme avec l'activation de la configuration utilisateur anonyme et un nouvel élément de contrôle d'accès. Ajouter cette ci-dessous
main
dans lefirewalls
de configuration pour permettre à l'utilisateur anonyme:Et ajouter un nouvel élément de contrôle d'accès pour permettre à l'utilisateur anonyme pour accéder au
/login
modèle:L'ordre est important ici puisque la règle est la suivante: premier chemin appariés gagne. Ainsi, le
/login
chemin d'accès doit être au-dessus de votre modèle pour d'autres le chemin/.*
. Cela devrait se résout vous rediriger boucle.La documentation de Symfony au sujet de la sécurité est en train d'être réécrit en ce moment et parler plus en détails sur ce problème. C'est dans le symfony-docs github sous la sécurité branche.
Ce qui concerne,
Matt
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
)+1 c'est me rend fou, je suis en utilisant 2.1, les docs ne rien dire à ce sujet.
OriginalL'auteur Matt
Le même problème se produit toujours dans la version actuelle (version de Symfony 2.1.8).
C'est à cause de la façon particulière que Apache + PHP en FastCGI poignées HTTP auth variables.
Au moins, le correctif pour la version actuelle est un peu plus simple qu'elle ne l'était avant (par rapport à @Teo.sk réponse), et les instructions sont disponibles directement codé en dur comme des commentaires dans le fichier
vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/ServerBag.php
du cadre:En bref, pour le fixer, tout ce que vous avez à faire est d'ajouter les lignes suivantes à la
.htaccess
fichier de laweb/
dossier de votre demande:De nouvelles infos (2013-05-01): maintenant, je suis en utilisant Symfony version 2.2.1 et pour la correction du travail que j'ai dû ajouter ces deux lignes de codes ci-dessous à droite de la ligne suivante de
web/.htaccess
:la plus courte et la plus à jour de la solution ici.
OriginalL'auteur pagliuca
vous ne pas besoin de modifier votre SymfonyProject, vous devez également changer de configuration apache2.
sudoedit /etc/apache2/sites-enabled/[votre site].conf
insérer
garder redémarrer apache2
profiter 🙂
OriginalL'auteur Massimo212121
- je utiliser mon boundle route:
sans le dernier slash
mal
bonne
OriginalL'auteur montblack