Yii, beste Weg zur Umsetzung der "Benutzer ändern, Passwort"
Ich bin mit Yii für eine Anwendung, ich Schreibe ein sehr einfaches Benutzer-management, wie das registrieren, löschen und aktualisieren Anwender... Für die Aktualisierung der vorhandenen user, die ich brauche, um zu überprüfen das alte Passwort, das erste, bevor Sie es ändern, um den neu eingegebenen Passwort. Hier ist also die Felder habe ich in der form:
username:----
old_password:---
new_password:---
und meine user-Tabelle sieht wie folgt aus:
id, username, password
Wie kann ich überprüfen die old_password, bevor Sie es aktualisieren mit der new_password? Ich kenne die üblichen php-Programmierung, aber ich möchte wissen, ob es irgendwelche Yii tricks, die dies automatisch erledigt...
Vielen Dank im Voraus
- Sie sollten re-benutzen Sie einen bestehenden authentication framework, Wann immer möglich, weil, wirklich, es ist Komplex. Zum Beispiel, nehmen Sie einen Blick an github.com/delight-im/PHP-Auth, die sowohl Rahmen-als-Agnostiker und Datenbank-agnostisch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seine einfache erstellen einer
action
hat Logik für update-pass.Make target für
form
neueaction
in diesem FallactionChangePass
undvalidate
es, wie Sie wollen .Einen groben Beispiel gesetzt werden kann, wie dies
Auch sicherstellen, dass Sie $old_password in Ihrem Benutzer -
User
Model
. Auch können Sie einige Validierungen in den Regeln des Modells, um neue Kennwort erforderlichkann es einige andere Möglichkeiten auch, aber ich mache es wie dieser
Auch erstellen Sie Ihre benutzerdefinierte Validierung
scenario
changePassword
Sollten Sie nicht verschmutzen Ihr Modell mit Müll. Bitte, denken Sie immer an diese grundlegenden MVC-Prinzipien:
Immer wieder verwendbaren code erstellen, machen Sie Ihren code "TROCKEN" (Don ' T repeat yourself)
Durch die Art und Weise, was ist der Zweck der das Feld Benutzername ein? Da die form für den eingeloggten Benutzer nur den Benutzernamen zugegriffen werden kann, die bereits mit Yii::app()->Benutzer.
Beispiel controller-action:
Beispiel template-code:
Die Vorlage sollte einfach genug zu schaffen. Dieser code, mit einigen kleinen tweaks, ist bereit, kopiert zu werden & eingefügt, um ein weiteres Yii-Projekt.
Hier ist, was ich persönlich gerne machen. Es ist eine komplizierte version von diesem.
Hinzufügen Modell zwei Felder, die helfen, Bearbeiten Sie das Kennwort ein. Hinweis: diese beiden Felder nicht vorhanden ist in der Datenbank und sind nicht in Gii generierten code. So etwas wie
In der form, nicht assoziieren das eigentliche Passwort Feld in der Datenbank mit jedem input. Die zwei-Feld in der Datenbank verknüpft werden soll mit diesen zwei Feldern. Die kurze version des Formulars wird:
Nun, wie kann ich wissen, dass Benutzer das Passwort geändert? Ich habe einfach check-in beforeSave (), wenn die beiden Felder leer sind und Sie miteinander vergleichen und dann das Passwort ändern. Wenn Sie leer sind, dann habe ich einfach überspringen die ganze Sache. So die einfache version von beforeSave ist:
Jetzt nach deiner Frage, eine Sache fehlt. Prüfung alte Passwort! Sie können neue Felder-Modell namens Adas Passwort und seine Eingabe in ein Formular-Steuerelement. Dann im beforesave-Methode (angezeigt durch einen Kommentar), können Sie vergleichen die Eingabe mit dem aktuellen Passwort-Feld aus der Datenbank ab und, wenn Sie übereinstimmen, dann tun Sie Passwort ändern.
Können Sie Sie als Gültigkeitsregeln mit Szenarien, aber ich fand es irgendwie kompliziert und mit wenig Zeit zur hand ging ich mit dieser Methode.