Ich versuche, ein Sicherheitsfeature in einem Symfony 2.1-Projekt zu implementieren, in dem der Administrator einen Benutzer mit einem anfänglichen Kennwort erstellen kann, und wenn der Benutzer sich das erste Mal anmeldet, wird der Änderungspasswort-Handler automatisch ausgelöst.Wie erzwinge Passwortänderung mit FOSUserBundle?
Ich habe Probleme, die FOSUserBundle-Klassen zu umgehen, und ich denke, dass dies sicherlich schon irgendwie eingebaut ist, zumindest teilweise, obwohl ich es nirgendwo in der Dokumentation sehen kann.
Ich möchte das credentides_expired Flag in der Entität verwenden. Wenn der Administrator den Benutzer erstellt, wird dieser Wert auf 1 festgelegt. Wenn sich der Benutzer zum ersten Mal anmeldet, wird credentials_expired aktiviert, und statt eine Ausnahme auszulösen, wird change-password ausgelöst. Ich habe es bis hierher geschafft.
ChangePasswordController würde dann sicherstellen, dass das Passwort tatsächlich geändert wurde (dies scheint nicht wie das Standardverhalten in FOS) und die credentials_expired ist auf 0 gesetzt. Hier bin ich stecken. Es gibt so viele Ebenen von Dienstleistungen, dass ich die Dinge scheinbar nicht richtig anpassen kann.
Konnten Sie genauer sein? Es gibt viele Ansätze, um dies zu lösen. Durch die Eingabe Ihres Codes können wir ermitteln, wie weiter verfahren werden soll. Wie auch immer, Rollen mit höherer Wahrscheinlichkeit als Flags zu verwenden, könnte eine gute Idee sein, weil Sie es mit der Symfony Firewall verwalten können. Daher können Personen, die die Rolle CREDENTIAL_EXPIRED haben, nicht auf das gesamte Web zugreifen, und sie sind in einem Formular stecken geblieben, das sie zwingt, ihr Kennwort zu ändern. – Manu
Der Code wäre der FOSUserBundle. Die Rolle ist eine großartige Idee, da keine Klassen erweitert werden müssen. Ich gebe das eine Chance. Vielen Dank. – David