2009-02-19 10 views
101

Mam działający formularz logowania w aplikacji asp.net. Standardowe elementy z polem nazwy użytkownika i hasła oraz przyciskiem do przetwarzania logowania. Działa w porządku.Przeczytaj dane pocztowe przesłane do formularza ASP.Net

Mam nowy wymóg, aby umożliwić użytkownikowi wprowadzenie nazwy użytkownika i hasła z oddzielnej strony HTML, która nie jest częścią mojej aplikacji asp.net. Planuję to osiągnąć przy użyciu standardowego html - formularza, wprowadzania, wysyłania itd. Działanie formularza będzie adresem URL mojej strony logowania asp.net, a jego metoda będzie POST.

Co chcę zrobić w kodzie C# znajdującym się za stroną formularza logowania asp.net, prawdopodobnie w zdarzeniu Page_Load, to sprawdzić, czy żądanie strony zawiera nazwę użytkownika i hasło przekazane. Jeśli Czy muszę odczytać te wartości i przetworzyć login tak, jakby ktoś kliknął przycisk logowania na stronie asp.net. Jeśli nie, to jak zwykle wyświetlam formularz logowania.

Jak sprawdzić istnienie i odczytać wartości nazwy użytkownika i hasła w żądaniu mojej strony.

Odpowiedz

136

Przeczytaj Request.Form NameValueCollection i przetwarzanie logiki odpowiednio:

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); 

... gdzie "txtUserName" i "txtPassword" są Nazwy z kontrolami na stronie wysyłania postu.

+0

Co z tablicami bajtowymi? Czy masz taki ciąg, a następnie przekształcić go w tablicę bajtów, czy co? Przesyłam plik do serve.r – Fallenreaper

+2

Zastanawiasz się, dlaczego warto powtarzać analizę wartości, zamiast sprawdzać żądanie bezpośrednio dla każdej nazwy kontrolnej? – Howiecamp

+0

@Howiecamp kiedykolwiek znalazł odpowiedź na to pytanie? Jestem również zaintrygowany. – tfrascaroli

12
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... } 

nazwa użytkownika jest nazwą wejścia na stronie przesyłania. Hasło można uzyskać w ten sam sposób. Jeśli nie jest pusty lub pusty, istnieje, a następnie zaloguj się do użytkownika (nie pamiętam dokładnych kroków dla członkostwa ASP.NET, zakładając, że tego właśnie używasz).

2
NameValueCollection nvclc = Request.Form; 
string uName= nvclc ["txtUserName"]; 
string pswod= nvclc ["txtPassword"]; 
//try login 
CheckLogin(uName, pswod); 
+0

Podaj prawidłową referencję, aby odpowiedzieć, aby była bardziej realistyczna. –