Ich versuche ein Passwortfeld nur zu validieren, wenn es vorhanden ist. Ich möchte zulassen, dass jemand einen Benutzer bearbeitet und das Benutzerkennwort ändern kann oder auch nicht. Also dachte ich mir, dass ich Laravels Validierungsregeln verwenden könnte, speziell die "manchmal" -Regel. Ich habe dieses Regelwerk:
%Vor%Dies ist für das Beispiel vereinfacht, es wird normalerweise andere Regeln für andere Felder und strengere Regeln für das Passwort geben. Ich erwarte, dass dies nur die min: 8-Regel anwendet, wenn das Passwort-Feld in den übergebenen Daten vorhanden ist, aber wenn ich das Passwort-Feld leer lasse, bekomme ich einen Validierungsfehler, der besagt, dass das Passwort-Feld erforderlich ist.
Ich bin mir nicht sicher, was ich in den Dokumenten nicht verstehe. Muss ich das Kennwortfeld vor der Validierung manuell entfernen, wenn die Formulareingabe so leer übergeben wurde?
%Vor%... und dann das Array in den Validator geben. Ich denke, das macht Sinn, aber ich könnte mit einiger Bestätigung tun, dass ich es richtig verstehe. Vielen Dank im Voraus.
Textdokumente machen es nicht klar, aber die erforderliche Entfernung macht es funktioniert.
%Vor%Ich denke, wir sollten Laravel sagen Wenn das Passwort nicht leer ist, legen Sie die Regeln sonst nichts tun.
%Vor%Ich denke, es ist im Allgemeinen sicherer, dem Benutzer zu erlauben, sein Passwort nur zu ändern, wenn er das alte zur Verfügung stellen kann.
Wenn der verbundene Benutzer sein Kennwort ändern kann, ohne das alte Kennwort anzugeben, kann dies ein Sicherheitsproblem darstellen.
Im Allgemeinen erlaube ich die Änderung des Benutzerpassworts mit Laravel:
%Vor%Dies validiert das alte Passwort nicht, da es uns egal ist, die Datenbank überprüft es für uns, aber ich validiere das neue Passwort nur, wenn das alte Passwort angegeben ist.
Im Bearbeitungsmodus füllen Sie das Passwortfeld zum Beispiel mit "********" und im Aktualisierungsmodus validieren Sie dies wie folgt
%Vor% und im Controller überprüfen $data['password']='********'
altes Passwort finden und
und $data['password']!='********'
update pssword
Tags und Links php validation laravel