Lire les données de publication soumises au formulaire ASP.Net

109

J'ai un formulaire de connexion fonctionnel dans une application asp.net. Trucs standard avec une zone de texte nom d'utilisateur et mot de passe et un bouton pour traiter la connexion. Fonctionne très bien.

J'ai une nouvelle exigence pour permettre à l'utilisateur de saisir le nom d'utilisateur et le mot de passe à partir d'une page html simple distincte qui ne fait pas partie de mon application asp.net. Je prévois d'y parvenir en utilisant le html standard - formulaire, entrée, bouton d'envoi, etc. L'action du formulaire sera l'URL de ma page de connexion asp.net et sa méthode sera POST.

Ce que je veux faire dans la page de code C # derrière le formulaire de connexion asp.net, vraisemblablement dans l'événement Page Load, est de vérifier si la demande de la page contient un nom d'utilisateur et une valeur de mot de passe transmis. Si c'est le cas, j'ai besoin pour lire ces valeurs et traiter la connexion comme si quelqu'un avait cliqué sur le bouton de connexion sur la page asp.net. Sinon, j'afficherai le formulaire de connexion comme d'habitude.

Comment vérifier l'existence et lire les valeurs de nom d'utilisateur et de mot de passe dans la demande de ma page.

Daveywc
la source

Réponses:

151

Lisez le Request.Form NameValueCollection et traitez votre logique en conséquence:

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

... où "txtUserName" et "txtPassword" sont les noms des contrôles sur la page de publication.

Cerebrus
la source
Qu'en est-il des tableaux d'octets? Auriez-vous une chaîne comme celle-là et ensuite la convertir en un tableau d'octets, ou quoi? Je télécharge un fichier sur le serveur .r
Fallenreaper
2
Vous êtes curieux de savoir pourquoi parcourir une collection de valeurs de noms plutôt que de vérifier la requête directement pour chaque nom de contrôle?
Howiecamp
@Howiecamp a déjà trouvé la réponse à cette question? Je suis également intrigué.
tfrascaroli
CE! J'ai débogué pendant 5 heures pour essayer de comprendre pourquoi diable je ne peux pas extraire les données de ce formulaire.
Callat
13
if (!string.IsNullOrEmpty(Request.Form["username"])) { ... }

nom d'utilisateur est le nom de l'entrée sur la page d'envoi. Le mot de passe peut être obtenu de la même manière. S'il n'est pas nul ou vide, il existe, puis connectez-vous à l'utilisateur (je ne me souviens pas des étapes exactes pour l'appartenance à ASP.NET, en supposant que c'est ce que vous utilisez).

John Sheehan
la source
3
NameValueCollection nvclc = Request.Form;
string   uName= nvclc ["txtUserName"];
string   pswod= nvclc ["txtPassword"];
//try login
CheckLogin(uName, pswod);
gdmanandamohon
la source
Donnez une référence appropriée de votre réponse afin que ce soit plus faisable.