2017-08-07 6 views
1

Ich habe eine Frage, ich habe Web-Anwendung auf Asp Net Core 1.1.0 mit dem implementierten klassischen Identitätsmodell und OpenIddict für die Autorisierung.Asp Core eine neue Art der Benutzerregistrierung über Identität hinzufügen

In der klassischen Implementierung bei der Registrierung des Benutzers mit E-Mail/Passwort muss ich die Möglichkeit der Registrierung auch mit CodeNumber (numerische Sequenz Länge von 15 Zeichen) als Login-Namen und Pin-Code (numerische Kombination von 4 Zeichen) erkennen als ein Passwort.

CodeNumber und PinCode werden getrennt von der Tabelle für die Benutzeridentität gespeichert.

Damit Anwender zwei Methoden verwenden kann, um das System anzumelden

Sagen Sie mir bitte, wie kann dies in Asp Net-Core erreicht werden? Vielen Dank im Voraus.

Antwort

1

Die Funktionsweise von Identity ist vereinfacht ausgedrückt, dass der Benutzer durch den Benutzernamen abgefragt und dann automatisch durch den Vergleich des Passworts angemeldet wird. Um die Dinge anders zu behandeln, müssen Sie nur mehr manuelle Kontrolle über diesen Prozess nehmen. Statt etwas wie UserManager.FindByNameAsync verwenden, würden Sie einfach zu Ihrem Kontext Rückfall und so etwas wie:

var user = db.Users.Where(m => m.CodeNumber == model.CodeNumber && m.PinCode == model.PinCode); 
if (user == null) 
{ 
    ModelState.AddModelError("", "Incorrect code number and/or pin code"); 
} 

Dann einfach den Benutzer melden Sie sich an Hand, wenn sie vorhanden sind:

await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
Verwandte Themen