Lesen Sie die an ASP.Net Form übermittelten Post-Daten

109

Ich habe ein funktionierendes Anmeldeformular in einer asp.net-Anwendung. Standardmaterial mit einem Textfeld für Benutzername und Passwort sowie einer Schaltfläche zum Verarbeiten des Logins. Funktioniert gut.

Ich habe eine neue Anforderung, die es dem Benutzer ermöglicht, den Benutzernamen und das Kennwort von einer separaten einfachen HTML-Seite einzugeben, die nicht Teil meiner asp.net-Anwendung ist. Ich habe vor, dies mit Standard-HTML zu erreichen - Formular, Eingabe, Senden-Schaltfläche usw. Die Formularaktion ist die URL meiner asp.net-Anmeldeseite und die Methode lautet POST.

Was ich im C # -Code hinter der Seite des asp.net-Anmeldeformulars tun möchte, vermutlich im Ereignis Page Load, ist zu überprüfen, ob die Anforderung für die Seite einen Benutzernamen und ein Kennwort enthält, die übergeben werden. Wenn dies der Fall ist, muss ich um diese Werte zu lesen und die Anmeldung so zu verarbeiten, als hätte jemand auf der asp.net-Seite auf die Anmeldeschaltfläche geklickt. Wenn nicht, zeige ich das Anmeldeformular wie gewohnt an.

Wie überprüfe und lese ich die Werte für Benutzername und Kennwort in der Anforderung für meine Seite?

daveywc
quelle

Antworten:

151

Lesen Sie die Request.Form NameValueCollection und verarbeiten Sie Ihre Logik entsprechend:

NameValueCollection nvc = Request.Form;
string userName, password;
if (!string.IsNullOrEmpty(nvc["txtUserName"]))
{
  userName = nvc["txtUserName"];
}

if (!string.IsNullOrEmpty(nvc["txtPassword"]))
{
  password = nvc["txtPassword"];
}

//Process login
CheckLogin(userName, password);

... wobei "txtUserName" und "txtPassword" die Namen der Steuerelemente auf der Buchungsseite sind.

Cerebrus
quelle
Was ist mit Byte-Arrays? Würden Sie eine solche Zeichenfolge haben und sie dann in ein Byte-Array konvertieren, oder was? Ich
lade
2
Neugierig, warum eine Namenswertsammlung durchlaufen wird, anstatt die Anforderung direkt für jeden Kontrollnamen zu überprüfen?
Howiecamp
@ Howiecamp jemals die Antwort auf diese Frage gefunden? Ich bin auch fasziniert.
Tfrascaroli
DIES! Ich habe 5 Stunden lang debuggt, um herauszufinden, warum zum Teufel ich die Daten nicht aus diesem Formular herausholen kann.
Callat
13
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... }

Benutzername ist der Name der Eingabe auf der übergebenden Seite. Das Passwort erhalten Sie auf die gleiche Weise. Wenn es nicht null oder leer ist, existiert es, dann melden Sie sich beim Benutzer an (ich erinnere mich nicht an die genauen Schritte für die ASP.NET-Mitgliedschaft, vorausgesetzt, Sie verwenden diese).

John Sheehan
quelle
3
NameValueCollection nvclc = Request.Form;
string   uName= nvclc ["txtUserName"];
string   pswod= nvclc ["txtPassword"];
//try login
CheckLogin(uName, pswod);
gdmanandamohon
quelle
Geben Sie eine korrekte Referenz Ihrer Antwort an, damit dies praktikabler ist.