อ่านข้อมูลโพสต์ที่ส่งไปยังแบบฟอร์ม ASP.Net


109

ฉันมีแบบฟอร์มเข้าสู่ระบบที่ใช้งานได้ในแอปพลิเคชัน asp.net สิ่งมาตรฐานที่มีกล่องข้อความชื่อผู้ใช้และรหัสผ่านและปุ่มสำหรับดำเนินการเข้าสู่ระบบ ใช้งานได้ดี

ฉันมีข้อกำหนดใหม่ในการอนุญาตให้ผู้ใช้ป้อนชื่อผู้ใช้และรหัสผ่านจากหน้า html ธรรมดาแยกต่างหากที่ไม่ได้เป็นส่วนหนึ่งของแอปพลิเคชัน asp.net ของฉัน ฉันวางแผนที่จะบรรลุสิ่งนี้โดยใช้ html มาตรฐาน - แบบฟอร์มอินพุตปุ่มส่ง ฯลฯ การดำเนินการแบบฟอร์มจะเป็น URL ของหน้าล็อกอิน asp.net ของฉันและวิธีการจะเป็น POST

สิ่งที่ฉันต้องการทำในโค้ด C # หลังหน้าของแบบฟอร์มการเข้าสู่ระบบ asp.net ซึ่งน่าจะอยู่ในเหตุการณ์ Page_Load คือการตรวจสอบว่าคำขอสำหรับเพจนั้นมีค่าชื่อผู้ใช้และรหัสผ่านที่ถูกส่งหรือไม่หากเป็นเช่นนั้นฉันต้อง เพื่ออ่านค่าเหล่านั้นและประมวลผลการเข้าสู่ระบบราวกับว่ามีคนคลิกปุ่มเข้าสู่ระบบในหน้า asp.net ถ้าไม่เช่นนั้นฉันจะแสดงแบบฟอร์มการเข้าสู่ระบบตามปกติ

ฉันจะตรวจสอบการมีอยู่ของและอ่านค่าชื่อผู้ใช้และรหัสผ่านในคำขอสำหรับเพจของฉันได้อย่างไร

คำตอบ:


151

อ่าน Request.Form NameValueCollection และประมวลผลตรรกะของคุณตาม:

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

... โดยที่ "txtUserName" และ "txtPassword" เป็นชื่อของตัวควบคุมในหน้าการโพสต์


แล้วไบต์อาร์เรย์ล่ะ? คุณจะมีสตริงแบบนั้นแล้วแปลงเป็นไบต์อาร์เรย์หรืออะไร? ฉันอัปโหลดไฟล์ไปยัง serve.r
Fallenreaper

2
อยากรู้ไหมว่าทำไมต้องวนซ้ำค่าการเก็บค่าชื่อแทนที่จะตรวจสอบคำขอโดยตรงสำหรับชื่อควบคุมแต่ละชื่อ
Howiecamp

@ Howiecamp เคยพบคำตอบสำหรับคำถามนั้นหรือไม่? ฉันรู้สึกทึ่งเช่นกัน
tfrascaroli

นี้! ฉันกำลังแก้ไขข้อบกพร่องเป็นเวลา 5 ชั่วโมงพยายามหาสาเหตุว่าทำไมฉันถึงไม่สามารถดึงข้อมูลออกจากแบบฟอร์มนี้ได้
Callat

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

ชื่อผู้ใช้คือชื่อของข้อมูลที่ป้อนในหน้าส่ง รหัสผ่านสามารถรับได้ในลักษณะเดียวกัน หากไม่เป็นโมฆะหรือว่างเปล่าแสดงว่ามีอยู่ให้เข้าสู่ระบบผู้ใช้ (ฉันจำขั้นตอนที่แน่นอนสำหรับการเป็นสมาชิก ASP.NET ไม่ได้โดยสมมติว่าเป็นสิ่งที่คุณใช้)


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

ให้อ้างอิงคำตอบที่เหมาะสมเพื่อให้เป็นไปได้มากขึ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.