วันศุกร์ที่ 1 พฤษภาคม พ.ศ. 2552

ASP.NET กับคุณสมบัติ User Authentication และ User Profile บน MySQL

วันนี้เราจะดูเรื่อง คุณสมบัติ User Authentication และ User Profile ที่ ASP.NET จัดเตรียมไว้ให้สำหรับจัดการเกี่ยวกับการจัดการกับ User ซึ่งคุณสมบัตินี้สามารถใช้ได้กับ Database ได้หลายชนิด ที่สำคัญสามารถใช้กับ MySQL ได้อีกด้วย

ASP.NET มี Feature พิเศษสำหรับจัดการกับระบบสมาชิกและ User Profile ที่สามารถจัดการได้ตั้งแต่ สร้าง User, กำหนด Role, การ Login, การกู้คืนพาสเวิร์ด ฯลฯ ที่เกี่ยวข้องกับ User โดยที่เราแทบไม่ต้องเขียน Code ในการจัดการเรื่องพวกนี้เองเลย เพียงแค่ Config ค่าต่างๆให้ถูกต้องก็สามารถใช้งานได้แล้ว

ซึ่งคุณสมบัติดังกล่าว มิได้มีให้เฉพาะสำหรับ SQL Server เท่านั้น แต่ทาง Microsoft ได้มีการกำหนด รูปแบบของคลาส Provider ที่ใช้จัดการกับระบบสมาชิกและ User Profile ไว้ เพื่อให้ผู้พัฒนาระบบฐานข้อมูลที่สนใจสามารถเขียน Plug-in Provider นี้เพื่อใช้งานกับ ASP.NET ได้ ซึ่ง MySQL ก็มีการทำ Plug-in ตัวนี้ไว้

ขั้นตอนในการใช้คุณสมบัติดังกล่าวสามารถทำได้ดังนี้
1. ดาวโหลด MySQL Connector Net และติดตั้ง ซึ่งตัวนี้เป็นตัวที่ใช้สำหรับติดต่อระหว่าง .NET กับ MySQL
2. ทำการ Add reference ไปยัง MySql.Data.dll และ MySql.Web.dll
3. ทำการ Create table ใน MySQL ด้วย code นี้
4. ทำการ Config Provider ที่จะใช้ในไฟล์ web.config --> system.web ดังนี้

กำหนด Membership Provider และ Set ค่าต่างๆ

หมายเหตุ defaultProvide กับ name สามารถใส่ชื่ออะไรก็ได้ที่คุณต้องการ เพื่อใช้สำหรับอ้างอิงเท่านั้น

กำหนด Role Provider และ Set ค่าต่างๆ

หมายเหตุ defaultProvide กับ name สามารถใส่ชื่ออะไรก็ได้ที่คุณต้องการ เพื่อใช้สำหรับอ้างอิงเท่านั้น

กำหนด Profile Provider และ Set ค่าต่างๆ

หมายเหตุ defaultProvide กับ name สามารถใส่ชื่ออะไรก็ได้ที่คุณต้องการ เพื่อใช้สำหรับอ้างอิงเท่านั้น

เมื่อมาถึงขั้นตอนนี้ก็สามารถใช้คุณสมบัติ การจัดการกับการกับระบบสมาชิกและ User Profile ใน ASP.NET ได้แล้ว

การใช้งาน Control ในหมวด Login คุณสามารถลาก Control ในหมวด Login มาใช้งานได้เลยโดยไม่ต้องเขียน Code ติดต่อกับฐานข้อมูลแต่อย่างใด เพราะตัว Provider ที่ MySQL Plug มานั้นจะจัดการให้ทั้งหมด เช่น ถ้าต้องการสร้าง User ก็ให้ลาก Control CreateUserWizard ลงมาวางไว้ในหน้าเวปเพจที่ต้องการ


จากรูปด้านล่าง ผมลาก Control CreateUserWizard ลงมาไว้ในเวปเพจที่ใช้ในการลงทะเบียน ทำการ Config ค่าเล็กน้อยพร้อมกับตกแต่งอีกนิดหน่อย เมื่อมีผู้ใช้งานเข้ามาที่เวปเพจสำหรับลงทะเบียน ทำการกรอกข้อมูล แล้วกด "ลงทะเบียน" ตัว ASP.NET ก็จะทำการ สร้าง User ให้เองโดยที่ผมไม่ต้องเขียน Code แม้แต่บรรทัดเดียว


ต่อไป เป็นตัวอย่างการใช้งาน User Profile ที่ตัว ASP.NET จะทำเป็น Strong Type ให้ซึ่งจะได้คุณสมบัติของ IntelliSense ของ .NET ด้วย ตามภาพข้างล่างนี้

จะเห็นว่ามี Properties ต่างๆที่เราได้กำหนดไว้ในไฟล์ web.config ก่อนหน้านี้ปรากฎขึ้นมา ทำให้สะดวกในการเขียน Code ในระดับนึงเลยทีเดียว

ตัวอย่างการใช้งาน Profile Provide คุณสามารถสร้าง Form เพื่อใช้ในการเก็บข้อมูลของ User จากนั้น Code เบื่องหลัง Page นั้นก็ให้ Set ค่าให้กับตัวแปล Profile จากนั้นใช้ำสั่ง Save มันจะทำการบันทึกข้อมูลของ User คนนั้นลงในฐานข้อมูลโดยที่เราไม่จำเป็นต้องไปเขียน SQL Code เพื่อใช้ในการบันทึก


ตัวอย่างการใช้งาน Role Provide


ตัวอย่างนี้เป็นการได้สาธิตการดึง User ทุกคนที่อยู่ใน Role Administrator ออก Bind เข้ากับ DropDownList (dllAdminUsers)

และ ASP.NET ยังได้มีหน้าที่ใช้จัดการกับ User ให้ด้วย เช่น การกำหนดรายชื่อ User การกำหนด Role ให้กับ User ฯลฯ โดยคุณสามารถกดตรงไอคอนตามรูป

กดตรงนี้


จะขึ้นหน้าเวปตามนี้

สุดท้ายตัวอย่างการกำหนดสิทธิ์สำหรับการเข้าหน้า Page ต่างๆตามสถานะของ User


จาก Config ข้างบน ส่วนแรกเป็นการกำหนดว่าเวปเพจ EditProfile.aspx ห้ามไม่ให้ User ที่เป็น Anonymous User (แทนด้วยเครื่องหมาย "?") หรือก็คือ User ที่ยังไม่ได้ Login นั่นเอง แต่ User ทุกคนที่ Login แล้ว(แทนด้วยเครื่องหมาย "*") สามารถเข้าได้ และส่วนที่สองเป็นการกำหนดว่าหากไม่มีสิทธิ์เข้าแล้วจะให้ Redirect ไปที่ไหน

หมายเหตุ name สามารถใส่ชื่ออะไรก็ได้ที่คุณต้องการ เพื่อใช้สำหรับอ้างอิงเท่านั้น

วันนี้ก็ขอจบการแชร์ความรู้เล็กๆน้อยๆเพียงเท่านี้ ไว้คราวหน้าจะมาอัพเดทต่อนะคับ หุหุ


3 ความคิดเห็น:

  1. ขอบคุณมากครับ
    กำลังศึกษาอยู่เลย

    ตอบลบ
  2. ไม่ระบุชื่อ17 มีนาคม 2553 เวลา 21:29

    code table ในsql โหลดไม่ได้ขอใหม่ได้ไหมครับ

    ตอบลบ
  3. ขอบคุณมากเลยครับได้หลงเข้ามาอ่านบทความนี้ กำลังศึกษาอยู่เลย

    ตอบลบ