Ich versuche herauszufinden, warum ich mehrere Benutzeranbieter nicht zu einem einzigen Anbieter zusammenstellen kann. Momentan konfiguriere ich ACL. Für die Benutzer-Provider möchte ich ein paar "fest codierte" Benutzer und Benutzer haben, die aus einer Datenbank geladen werden.
Wenn Sie die Dokumentation lesen, wird angegeben, dass Sie nicht benötigt werden um zwei Benutzeranbieter zu haben - einen für die Benutzer in_memory
und einen für die Benutzer database
. Sie sollten in der Lage sein, sie zu einem einzigen Benutzeranbieter zu kombinieren (was ich versuche).
Die vorgeschlagene Konfiguration lautet:
%Vor%Meine Konfiguration ist:
%Vor%Leider bekomme ich diese Ausnahme:
%Vor% Wenn ich jedoch zwei verschiedene Anbieter anlege und sie verkette, funktioniert das ohne Probleme.
Ich kann nicht herausfinden, warum das passieren würde? Es ist deutlich in der Dokumentation angegeben - you can accomplish this even more easily by combining the two sources into a single provider
.
Was fehlt mir hier?
Warum verketten Sie keine Anbieter? Die Dokumentation, auf die Sie verweisen, gibt an, dass Sie mehrere Benutzeranbietern " ... verwenden können, indem Sie einen neuen Anbieter erstellen, der die beiden zusammen verknüpft ".
Jeder Authentifizierungsmechanismus (z. B. HTTP-Authentifizierung, Formularanmeldung usw.) verwendet genau einen Benutzeranbieter und verwendet standardmäßig den ersten deklarierten Benutzeranbieter. Was aber, wenn Sie einen wenigen Benutzer über die Konfiguration und den Rest Ihrer Benutzer in der Datenbank angeben möchten? Dies ist möglich, indem Sie einen neuen Anbieter erstellen, der die beiden zusammen verknüpft.
Jetzt verwenden alle Authentifizierungsmechanismen chain_provider , da es sich um den ersten angegeben hat. Der chain_provider versucht wiederum, den Benutzer von den in_memory und user_db -Anbietern zu laden.
Alles, was Sie tun müssen, ist einen Kettenanbieter einzurichten.
%Vor%Welche Symfony-Version verwenden Sie? Wenn 2.0, ist in der Dokumentation 2.0 die Konfiguration etwas anders:
%Vor% Beachten Sie, dass die memory
Taste fehlt.