Ich arbeite an der Implementierung eines benutzerdefinierten Mitgliedschaft-Provider, der gegen ein vorhandenes Schema in meiner Datenbank funktioniert und ein paar Gedanken/Fragen.Login-Steuerelement und benutzerdefinierte Mitgliedschaft Provider
Die Anmeldesteuerung wird automatisch die ValidateUser-Methode des Mitgliedschaftsanbieters aufrufen. Unabhängig von der Implementierung des Anbieters ist das einzige, was die Anmeldesteuerung interessiert, der Bool-Wert, der von dieser Methode zurückgegeben wird. Was mich verwirrt, ist, dass es mehrere Gründe dafür geben könnte, warum ein Login-Versuch fehlgeschlagen ist; Der Benutzer ist ausgesperrt, zu viele Versuche in einem bestimmten Zeitraum usw. Es gibt keine Möglichkeit, dies der Steuerung zu vermitteln, damit die richtige Nachricht angezeigt werden kann. Andere Eigenschaften des Mitgliedschaftsanbieters wie PasswordStrengthRegularExpression haben absolut keine Auswirkung auf das Login-Steuerelement (out of the box). Ich hätte gehofft, dass es irgendwie in Validatoren für reguläre Ausdrücke übersetzt würde, aber das scheint nicht das zu sein Fall. Es scheint also, dass ich die Login-Steuereigenschaften mit diesen Einstellungen aus der Provider-Konfiguration initialisieren muss, wenn ich möchte, dass sie das Steuerelement selbst übernehmen.
Wenn die einzige Sache, dass das Login-Steuerelement tut aus der Box (ohne manuell Ereignisse und dabei die Initialisierung, wie oben beschrieben Handling) ist rufen Sie die ValidateUser Methode auf dem Mitgliedschaftsanbieter, sehe ich keine Möglichkeit zum Anmelden vermitteln zurück Kontrollieren Sie, warum die Validierung fehlgeschlagen ist oder ob Sie beispielsweise Validierungsanforderungen auf der Basis eines bestimmten Zeitfensters einschränken. Letztendlich ist meine Frage, warum sollte ich den Mitgliedschaftsanbieter dann auch in Verbindung mit der Login-Kontrolle benutzen? Es scheint, dass es nur für eine Antwort vom Typ Ja/Nein entworfen wurde, was sehr restriktiv ist. Wenn ich Logik mit verschiedenen Nachrichten zurück zu dem Benutzer erstellen möchte, muss ich die Login-Steuerereignisse behandeln und meine eigenen Authentifizierungsklassen aufrufen, die alle meine Geschäftsanforderungen verarbeiten, und eine benutzerdefinierte Fehlermeldung zurück an das Login-Steuerelement an zurückgeben Anzeige für den Benutzer, damit sie wissen, warum ihr Versuch ungültig ist.
Wenn ich nicht falsch in meinen Annahmen bin, scheint es, dass die Schnittstelle zwischen dem Login-Steuerelement als Mitgliedschaft API zu restriktiv ist, um nützlich zu sein. Vielleicht funktioniert die API besser für andere Auth Controls wie ChangePassword besser, aber für die eigentliche Login-Kontrolle sehe ich den Punkt nicht.
Ich schätze Ihre Gedanken.
Hat nicht der Mitgliedschaftsanbieter verliert es Wert ist an diesem Punkt zu mir? Wenn ich vorausfahre und das Authenticate-Ereignis behandle, muss ich die ValidateUser-Methode beim Provider selbst aufrufen. Diese Methode wird nicht ausreichen, also müsste ich eine andere Methode aufrufen, die mir sagt, warum die Anmeldung fehlgeschlagen ist. Ich stimme dir bei der Passwortstärke zu. – e36M3
@ e36M3 - Yeap Sie haben Recht. Das ist der Weg zu gehen. Was ich tun würde ist, zuerst alle Validierung aufrufen, schreiben Sie den Fehler auf der Steuerung ErrorMessage-Eigenschaft und schließlich, wenn etwas fehlschlägt, –