كيف يتم تنفيذ المصادقة المستندة إلى النماذج في تطبيق ASP.NET الخاص بك باستخدام C #.NET

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية301240
الموجز
توضح هذه المقالة كيفية تنفيذ المستندة إلى النماذج المصادقة باستخدام قاعدة بيانات لتخزين المستخدمين.

back to the top

متطلبات

توضح القائمة التالية الأجهزة الموصى بها، البرامج، البنية الأساسية للشبكة، وحزم الخدمات التي تحتاجها:
  • Microsoft Visual Studio.NET
  • Microsoft إنترنت معلومات Services (IIS) الإصدار 5.0 أو إصدار أحدث
  • ملقم Microsoft SQL
back to the top

إنشاء تطبيق ASP.NET باستخدام C#.NET

  1. قم بفتح Visual Studio.NET.
  2. إنشاء تطبيق ويب ASP.NET جديد، وحدد اسم وموقعه.
back to the top

تكوين إعدادات الأمان في ملف Web.config

يوضح هذا القسم كيفية إضافة وتعديل <authentication></authentication> و <authorization></authorization> مقاطع التكوين لتكوين تطبيق ASP.NET إلى استخدام المصادقة المستندة إلى النماذج.
  1. في "مستكشف الحلول"، افتح ملف Web.config.
  2. تغيير وضع مصادقة إلى النماذج.
  3. قم بإدراج علامة <Forms>، والتعبئة المناسبة سمات. (لمزيد من المعلومات حول هذه السمات، أرجع إلى موقع MSDN وثائق أو وثائق التشغيل السريع المسردة في </Forms>مراجع المقطع.) النسخة التعليمات البرمجية التالية ومن ثم انقر فوق لصق ك HTML علىتحرير القائمة للصق التعليمات البرمجية في <authentication></authentication> المقطع من الملف:
    <authentication mode="Forms">   <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx"    protection="All" path="/" timeout="30" /></authentication> 					
  4. رفض الوصول إلى المستخدم المجهول في <authorization></authorization> المقطع كما يلي:
    <authorization>   <deny users ="?" />   <allow users = "*" /></authorization>					
back to the top

إنشاء جدول قاعدة بيانات نموذج إلى بيانات المستخدمين المتجر

يوضح هذا القسم كيفية إنشاء قاعدة بيانات نموذج إلى تخزين اسم المستخدم وكلمة المرور دور للمستخدمين. تحتاج العمود دور إذا كنت تريد تخزين أدوار المستخدمين في قاعدة البيانات وتنفيذ القائم على الدور أمان.
  1. على بدء تشغيل القائمة، انقر فوقتشغيل، ثم اكتب برنامج "المفكرة" لفتح برنامج "المفكرة".
  2. تسليط الضوء على رمز البرنامج النصي SQL التالي، انقر بالزر الأيمن التعليمات البرمجية ومن ثم انقر فوق نسخة. في "المفكرة"، انقر فوقلصق على تحرير للصق التالية التعليمات البرمجية:
    if exists (select * from sysobjects where id = object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[Users]GOCREATE TABLE [dbo].[Users] (   [uname] [varchar] (15) NOT NULL ,   [Pwd] [varchar] (25) NOT NULL ,   [userRole] [varchar] (25) NOT NULL ,) ON [PRIMARY]GOALTER TABLE [dbo].[Users] WITH NOCHECK ADD    CONSTRAINT [PK_Users] PRIMARY KEY  NONCLUSTERED    (      [uname]   )  ON [PRIMARY] GOINSERT INTO Users values('user1','user1','Manager')INSERT INTO Users values('user2','user2','Admin')INSERT INTO Users values('user3','user3','User')GO					
  3. حفظ الملف ك Users.sql.
  4. على كمبيوتر Microsoft SQL Server، افتح Users.sql في محلل استعلام. من قائمة قواعد البيانات، انقر فوق pubs، و تشغيل البرنامج النصي. وهذا يقوم بإنشاء نموذج جدول مستخدمين ويقوم بملء الجدول الموجود في قاعدة بيانات Pubs لاستخدامه مع هذا التطبيق.
back to the top

إنشاء صفحة Logon.aspx

  1. إضافة "نموذج ويب" جديد إلى المشروع باسم Logon.aspx.
  2. افتح الصفحة Logon.aspx في المحرر، وقم بالتبديل إلى HTML طريقة العرض.
  3. نسخ التعليمات البرمجية التالية، واستخدامها لصق HTML على تحرير القائمة إدراج التعليمات البرمجية بين<form>العلامات: </form>
    <h3>   <font face="Verdana">Logon Page</font></h3><table>   <tr>      <td>Email:</td>      <td><input id="txtUserName" type="text" runat="server"></td>      <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName"           Display="Static" ErrorMessage="*" runat="server"            ID="vUserName" /></td>   </tr>   <tr>      <td>Password:</td>      <td><input id="txtUserPass" type="password" runat="server"></td>      <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass"          Display="Static" ErrorMessage="*" runat="server"           ID="vUserPass" />      </td>   </tr>   <tr>      <td>Persistent Cookie:</td>      <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>      <td></td>   </tr></table><input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p><asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" />						
    يستخدم هذا "النموذج ويب" لتقديم نموذج تسجيل دخول للمستخدمين حتى يتسنى لهم توفير اسم المستخدم وكلمة المرور لتسجيل الدخول إلى التطبيق.
  4. قم بالتبديل إلى طريقة عرض التصميم، وقم بحفظ الصفحة.
back to the top

التعليمات البرمجية معالج الحدث حيث يتم التحقق من صحة بيانات اعتماد المستخدم

يقدم هذا المقطع التعليمات البرمجية التي يتم وضعها في التعليمات البرمجية الخلفية الصفحة (Logon.aspx.cs).
  1. انقر نقراً مزدوجاً فوق تسجيل الدخول لفتح الملف Logon.aspx.cs.
  2. استيراد مساحات الأسماء المطلوبة في ملف التعليمات البرمجية الخلفية:
    using System.Data.SqlClient;using System.Web.Security;					
  3. إنشاء دالة ValidateUser للتحقق من صحة بيانات اعتماد المستخدم عن طريق البحث في قاعدة البيانات. (تأكد من تغيير سلسلة الاتصال للإشارة إلى الخاص بك قاعدة بيانات).
    private bool ValidateUser( string userName, string passWord ){	SqlConnection conn;	SqlCommand cmd;	string lookupPassword = null;	// Check for invalid userName.	// userName must not be null and must be between 1 and 15 characters.	if ( (  null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) )	{		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." );		return false;	}	// Check for invalid passWord.	// passWord must not be null and must be between 1 and 25 characters.	if ( (  null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) )	{		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed." );		return false;	}	try	{		// Consult with your SQL Server administrator for an appropriate connection		// string to use to connect to your local SQL Server.		conn = new SqlConnection( "server=localhost;Integrated Security=SSPI;database=pubs" );		conn.Open();		// Create SqlCommand to select pwd field from users table given supplied userName.		cmd = new SqlCommand( "Select pwd from users where uname=@userName", conn );		cmd.Parameters.Add( "@userName", SqlDbType.VarChar, 25 );		cmd.Parameters["@userName"].Value = userName;		// Execute command and fetch pwd field into lookupPassword string.		lookupPassword = (string) cmd.ExecuteScalar();		// Cleanup command and connection objects.		cmd.Dispose();		conn.Dispose();	}	catch ( Exception ex )	{		// Add error handling here for debugging.		// This error message should not be sent back to the caller.		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Exception " + ex.Message );	}	// If no password found, return false.	if ( null == lookupPassword ) 	{		// You could write failed login attempts here to event log for additional security.		return false;	}	// Compare lookupPassword and input passWord, using a case-sensitive comparison.	return ( 0 == string.Compare( lookupPassword, passWord, false ) );}					
  4. يمكنك استخدام إحدى طريقتين لإنشاء النماذج ملف تعريف ارتباط المصادقة وإعادة توجيه المستخدم إلى صفحة مناسبة في الحدث cmdLogin_ServerClick . يتم توفير نموذج التعليمات البرمجية لكل من وحدات السيناريو. استخدم أي من بها وفقا للشرط الخاص بك.
    • استدعاء الأسلوب ريديريكتفروملوجينباجي لإنشاء ملف تعريف ارتباط مصادقة النماذج تلقائياً وإعادة توجيه المستخدم إلى صفحة مناسبة في الحدث cmdLogin_ServerClick :
      private void cmdLogin_ServerClick(object sender, System.EventArgs e){if (ValidateUser(txtUserName.Value,txtUserPass.Value) )	FormsAuthentication.RedirectFromLoginPage(txtUserName.Value,		chkPersistCookie.Checked);	else		Response.Redirect("logon.aspx", true);}						
    • إنشاء تذكرة المصادقة، بتشفيره، إنشاء ملف تعريف ارتباط، إضافة إلى الاستجابة، وإعادة توجيه المستخدم. يمنحك هذا المزيد التحكم في كيفية إنشاء ملف تعريف الارتباط. يمكنك أيضا تضمين البيانات المخصصة على طول مع فورمسوثينتيكاتيونتيكيت في هذه الحالة.
      private void cmdLogin_ServerClick(object sender, System.EventArgs e){   if (ValidateUser(txtUserName.Value,txtUserPass.Value) )   {      FormsAuthenticationTicket tkt;      string cookiestr;      HttpCookie ck;      tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");      cookiestr = FormsAuthentication.Encrypt(tkt);      ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);      if (chkPersistCookie.Checked)      ck.Expires=tkt.Expiration;			    ck.Path = FormsAuthentication.FormsCookiePath;       Response.Cookies.Add(ck);      string strRedirect;      strRedirect = Request["ReturnUrl"];      if (strRedirect==null)            strRedirect = "default.aspx";         Response.Redirect(strRedirect, true);   }   else      Response.Redirect("logon.aspx", true);}						
  5. تأكد من أنه قد تمت إضافة التعليمات البرمجية التالية إلى الأسلوب InitializeComponent في التعليمات البرمجية التي تنشئ "مصمم نموذج ويب":
    this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);					
back to the top

إنشاء صفحة Default.aspx

ينشئ هذا المقطع صفحة اختبار الذي يتم توجيه المستخدمين بعد المصادقة. في حالة استعراض المستخدمين إلى هذه الصفحة دون الأول تسجيل الدخول للتطبيق، يتم توجيههم إلى صفحة تسجيل الدخول.
  1. إعادة تسمية الصفحة WebForm1.aspx الموجودة باسم Default.aspx، و فتحه في المحرر.
  2. قم بالتبديل إلى طريقة عرض HTML، ونسخ التعليمة البرمجية التالية بين علامة<form>العلامات: </form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">						
    يستخدم هذا الزر تسجيل الخروج مصادقة النماذج جلسة العمل.
  3. قم بالتبديل إلى طريقة عرض التصميم، وقم بحفظ الصفحة.
  4. استيراد مساحات الأسماء المطلوبة في ملف التعليمات البرمجية الخلفية:
    using System.Web.Security;					
  5. انقر نقراً مزدوجاً فوق تسجيل الخروج لفتح التعليمات البرمجية-الخلف الصفحة (. aspx. cs)، ونسخة التعليمات البرمجية التالية في معالج الأحداث cmdSignOut_ServerClick :
    private void cmdSignOut_ServerClick(object sender, System.EventArgs e){   FormsAuthentication.SignOut();   Response.Redirect("logon.aspx", true);}					
  6. تأكد من أنه قد تمت إضافة التعليمات البرمجية التالية إلى الأسلوب InitializeComponent في التعليمات البرمجية التي تنشئ "مصمم نموذج ويب":
    this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);					
  7. حفظ ثم ترجمة المشروع. يمكنك الآن استخدام التطبيق.
back to the top

ملاحظات إضافية

  • قد تحتاج إلى تخزين كلمات المرور بشكل أمن في قاعدة بيانات. يمكنك يمكنك استخدام الدالة الأداة المساعدة لفئة FormsAuthentication المسمى هاشباسووردفورستورينجينكونفيجفيلي لتشفير كلمات المرور قبل أن تقوم بتخزينها في قاعدة البيانات أو ملف التكوين.
  • قد تحتاج إلى تخزين معلومات الاتصال SQL في ملف التكوين (Web.config) حيث يمكنك بسهولة تعديله إذا الضرورية.
  • قد تحتاج إلى إضافة تعليمات برمجية لمنع المستخدمين المتطفلين الذين يحاولون استخدام تركيبات مختلفة من كلمات المرور من تسجيل الدخول. على سبيل المثال، يمكنك تضمين منطق يقبل محاولات تسجيل الدخول أو ثلاثة. إذا كان لا يمكن للمستخدم تسجيل الدخول في عدد معين من المحاولات، قد تحتاج إلى تعيين إشارة قاعدة البيانات لعدم السماح بهذا المستخدم بتسجيل الدخول حتى يتم خلال إعادة تمكين هذا المستخدم له أو لها الحساب عن طريق زيارة صفحة أخرى أو عن طريق الاتصال بخط الدعم الخاص بك. في الإضافة إلى ذلك، يجب عليك إضافة الإعلام بالخطأ المناسبة معالجة أينما الضرورية.
  • لأنه يتم تعريف المستخدم استناداً إلى المصادقة ملف تعريف الارتباط، قد تحتاج إلى استخدام طبقة مأخذ التوصيل الآمنة (SSL) على هذا التطبيق حتى يمكن أن لا أحد خداع ملف تعريف ارتباط المصادقة وأية قيمة أخرى المعلومات التي يتم نقلها.
  • تتطلب مصادقة النماذج-قبول العميل الخاص بك أو تمكين ملفات تعريف الارتباط على المستعرض الخاص بهم.
  • معلمة المهلة الخاصة <authentication></authentication> مقطع التكوين التحكم في الفترات التي يتم إعادة إنشاء ملف تعريف ارتباط المصادقة. يمكنك اختيار قيمة توفر تحسين الأداء والأمان.
  • قد بعض الوكلاء وسيط وذاكرات التخزين المؤقت على شبكة الإنترنت التخزين المؤقت لاستجابات ملقم ويب التي تحتوي على رؤوس مجموعة من ملفات تعريف الارتباط، وثم أرجع إلى مستخدم آخر. لأن تستخدم المصادقة المستندة إلى نماذج ملف تعريف الارتباط لمصادقة المستخدمين، يمكن أن يسبب هذا للمستخدمين بطريق الخطأ (أو عن قصد) تنتحل شخصية مستخدم آخر باستلام ملف تعريف ارتباط من وكيل وسيط أو ذاكرة التخزين المؤقت لا تقصده الأصل الخاصة بها.
back to the top
مراجع
لمزيد من المعلومات حول كيفية تطبيق بسيط المصادقة المستندة إلى النماذج التي تستخدم <credentials></credentials> المقطع تخزين المستخدمين وكلمات المرور، راجع ما يلي نموذج التشغيل السريع ASP.NET GotDotNet:
المصادقة المستندة إلى النماذج
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx
لمزيد من المعلومات حول كيفية تنفيذ المستندة إلى النماذج المصادقة التي تستخدم ملف XML لتخزين المستخدمين وكلمات المرور، تشير إلى الموضوع التالي في.NET Framework برامج تطوير مجموعة أدوات (SDK) الوثائق:
مصادقة النماذج باستخدام ملف XML المستخدمين
.aspx http://msdn2.microsoft.com/en-us/library/1b1y85bh (vs.71)
لمزيد من المعلومات حول أمان تطبيق ويب ASP.NET، أرجع إلى دليل التالية Microsoft.NET Framework الخاص بالمطور الوثائق: لمزيد من المعلومات حول مساحة الاسم System.Web.Security ، أرجع إلى Microsoft.NET Framework التالية الوثائق المرجعية: لمزيد من المعلومات حول تكوين ASP.NET، أرجع إلى مقالات دليل التالية Microsoft المطور.NET Framework: للمزيد من المعلومات حول إرشادات الأمان ASP.NET، أرجع إلى المستند التقني MSDN التالي:
المصادقة في ASP.NET: إرشادات الأمان.NET
http://msdn2.microsoft.com/en-us/library/ms978378.aspx
back to the top

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 301240 - آخر مراجعة: 11/15/2012 03:02:00 - المراجعة: 1.0

Microsoft ASP.NET 1.1, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 64-bit Edition

  • kbconfig kbhowtomaster kbsecurity kbweb kbmt KB301240 KbMtar
تعليقات