أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

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

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

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

back to the top

متطلبات

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

إنشاء تطبيق ASP.NET باستخدام Visual Basic.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.vb).
  1. افتح الملف Logon.aspx.vb.
  2. استيراد مساحات الأسماء المطلوبة في ملف التعليمات البرمجية الخلفية:
    Imports System.Data.SqlClientImports System.Web.Security					
  3. إنشاء دالة ValidateUser للتحقق من صحة بيانات اعتماد المستخدم عن طريق البحث في قاعدة البيانات. (تأكد من تغيير سلسلة الاتصال للإشارة إلى الخاص بك قاعدة البيانات.)
    Private Function ValidateUser(ByVal userName As String, ByVal passWord As String) As Boolean        Dim conn As SqlConnection        Dim cmd As SqlCommand        Dim lookupPassword As String        lookupPassword = Nothing        ' Check for an invalid userName.        ' userName  must not be set to nothing and must be between one and 15 characters.        If ((userName Is Nothing)) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.")            Return False        End If        If ((userName.Length = 0) Or (userName.Length > 15)) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.")            Return False        End If        ' Check for invalid passWord.        ' passWord must not be set to nothing and must be between one and 25 characters.        If (passWord Is Nothing) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.")            Return False        End If        If ((passWord.Length = 0) Or (passWord.Length > 25)) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.")            Return False        End If        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 the users table given a 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 = cmd.ExecuteScalar()            ' Cleanup command and connection objects.            cmd.Dispose()            conn.Dispose()        Catch ex As Exception            ' 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)        End Try        ' If no password found, return false.        If (lookupPassword Is Nothing) Then            ' You could write failed login attempts here to the event log for additional security.            Return False        End If        ' Compare lookupPassword and input passWord by using a case-sensitive comparison.        Return (String.Compare(lookupPassword, passWord, False) = 0)End Function					
  4. يمكنك استخدام إحدى الطريقتين التاليتين لإنشاء النماذج ملف تعريف ارتباط المصادقة وإعادة توجيه المستخدم إلى صفحة مناسبة في الحدث cmdLogin_ServerClick . يتم توفير نموذج التعليمات البرمجية لكل من وحدات السيناريو. استخدم أي من لهم وفقا للشرط الخاص بك.
    • استدعاء الأسلوب ريديريكتفروملوجينباجي لإنشاء ملف تعريف ارتباط مصادقة النماذج تلقائياً وإعادة توجيه المستخدم إلى صفحة مناسبة في الحدث cmdLogin_ServerClick :
      Private Sub cmdLogin_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) _   Handles cmdLogin.ServerClick   If ValidateUser(txtUserName.Value,txtUserPass.value) Then      FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, _      chkPersistCookie.Checked)   Else      Response.Redirect("logon.aspx", True)   End IfEnd Sub						
    • إنشاء تذكرة المصادقة، بتشفيره، إنشاء ملف تعريف ارتباط، إضافة إلى الاستجابة، وإعادة توجيه المستخدم. يمنحك هذا المزيد التحكم في كيفية إنشاء ملف تعريف الارتباط. يمكنك أيضا تضمين البيانات المخصصة على طول مع فورمسوثينتيكاتيونتيكيت في هذه الحالة.
      Private Sub cmdLogin_ServerClick(ByVal sender As Object, _   ByVal e As System.EventArgs) Handles cmdLogin.ServerClick   If Validateuser(txtUserName.Value,txtUserPass.Value) Then      Dim tkt As FormsAuthenticationTicket      Dim cookiestr As String      Dim ck As HttpCookie      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) then ck.Expires=tkt.Expiration       ck.Path = FormsAuthentication.FormsCookiePath()       Response.Cookies.Add(ck)      Dim strRedirect As String      strRedirect = Request("ReturnURL")      If strRedirect <> "" Then         Response.Redirect(strRedirect, True)      Else         strRedirect = "default.aspx"         Response.Redirect(strRedirect, True)      End If   Else      Response.Redirect("logon.aspx", True)   End IfEnd Sub						
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. استيراد مساحات الأسماء المطلوبة في ملف التعليمات البرمجية الخلفية:
    Imports System.Web.Security					
  5. فتح التعليمات البرمجية-الخلف الصفحة (الافتراضي)، ونسخة التعليمات البرمجية التالية في معالج الأحداث cmdSignOut_ServerClick :
    Private Sub cmdSignOut_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdSignOut.ServerClick   FormsAuthentication.SignOut()   Response.Redirect("logon.aspx", True)End Sub					
  6. حفظ ثم ترجمة المشروع. يمكنك الآن استخدام التطبيق.
back to the top

استكشاف الأخطاء وإصلاحها

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

هوارد ومايكل وديفيد لوبلان. كتابة التعليمات البرمجية آمنة. Microsoft Press، 2001.
back to the top
مصادقة النماذج

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

خصائص

رقم الموضوع: 308157 - آخر مراجعة: 06/28/2013 01:47:00 - المراجعة: 9.0

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbproductlink kbconfig kbhowtomaster kbsecurity kbweb kbmt KB308157 KbMtar
تعليقات
ype="text/JavaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" p;t=">sListForLargeScreens track by $index" class="col-sm-6 col-xs-24 ng-scope"> España - Español
Paraguay - Español
Venezuela - Español
id=1&t=">4050&did=1&t=">d=1&t=">r varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" did=1&t=">