السلام عليكم ورحمة الله وبركاته …

كنا قد تكلمنا في الدرس السابق الدرس الثاني: تعريف الـ Roles و Members في ASP.NET و أيضاً الدرس الأول: إنشاء قاعدة بيانات Membership و Role في ASP.NETعن إنشاء قاعدة بيانات للـ Membership و Roles الخاصة بالـ ASP.NET و كذلك تعاملنا مع Roles و Memebers في ASP.NET Web site Administrator Tool و قمنا باضافة AdminRole و UserRole و قمنا باضافة ثلاثة مستخدمين، أحدهم في AdminRole و الآخر في UserRole و الأخير بدون أي Role.

في الدروس السابقة كنت اوضح بعض الأمور بأدق التفاصيل و لكن في هذا الدرس و الدروس التي تليه، سوف أتكلم بشرح اعم قليلاً، خصوصاً انه من المفترض انه لديك خبرة من قبل في ASP.NET.

في البداية سوف تجد في Toolbox في الجهة اليسرى مجموعة من الـ User Controlsو من ضمنها سوف تجد Login كما في الشكل أدناه:

هذه الأدوات هي ادوات جاهزة قامت شركة مايكروسوفت بتطويرها للتعامل مع إدارة المستخدمين مثل تسجيل الدخول، و تسجيل مستخدم جديد، و كذلك تغير كملة المرور، و ما إلى ذلك … كل هذا سوف نشاهده في هذا الدرس إن شاء الله.

الآن يوجد لدينا صفحة البداية في المشروع في Visual Studio .net باسم Default.aspx

الان لننشئ صفحة باسم Login.aspx. و لنقم بسحب الكنترول Login كما في الصورة:

و لنفلته على الصفحة Login.aspx وسوف يكون شكلها كالآتي:

و يوجد المثلث في الزاوية العلوية اليمنى، تستطيع تغيير الكنترول من خلاله Format.

الآن لتتجه إلى ملف Web.Config و ابحث عن authentication mode=”Forms” و قم بعمل التغييرات التالية:

</p>
<p>
 <authentication mode="Forms"><br />
 <forms loginUrl="~/login.aspx" /><br />
 </authentication> 
</p>
<p>
 <authorization><br />
 <deny users="?" /><br />
 <allow users="*" /><br />
 </authorization> 
</p>
<p>

في هذا الكود قمنا بتحديد ان صفحة الـ Login موجودة في الصفحة Login.aspx.

و في الجزء الثاني authorization و الخاص بتحديد الصلاحيات قمنا بعمل خاصيتين هما Allow “التصريح” و Deny “المنع”.

في Allow قلنا انه يحق الدخول للمشروع لكل المستخدمين المسجلين لدي و في الـ Deny حددنا انه سيتم منع بقية المستخدمين من الدخول.

أي انه سوف يسمح بالدخول للـ Admin و User و AnyUser الذي قمنا بادخالهم في الدرس السابق.

و افيد انه يوجد العديد من الخيارات الأخرى للتصريح و المنع سوف نراها لاحقاً إن شاء الله.

و الآن هذا التعريف في Web.Config صرحنا بأنه لابد من التسجيل لكي يدخل الشخص الموقع الخاص بنا.

الآن قم بتنفيذ البرنامج و افتح صفحة Default.aspx لاحظ انه اعاد توجيهك بشكل تلقائي إلى الصفحة Login.aspx كما في الصورة أدناه:

و الان ادخل بأي مستخدم من المستخدمين الذين قمنا بإنشائهم في الدرس السابق و سوف تلاحظ انه سمح لهم بالدخول.

الآن لنقم بانشاء صفحة اسمها CreateUser.aspx و ذلك لكي نسمح لزوار الموقع بالتسجيل…

و في هذه الصفحة لنسحب الكنترول CreateUserWizard و يمكنك تغيير الـ Format كما في الشكل التالي:

و في صفحة الـ Login.aspx لنضع رابط يشير إلى صفحة التسجيل كما في الشكل:

و الآن لنشغل البرنامج …و نختبر صفحاتنا البسيطة …

عندما نتفذنا Default.aspx قام ASP.NET باعادة توجيهنا إلى Login.aspx …

لنقم الآن بتجربة الصفحة CreateUser.aspx و ذلك بالضغط على الرابط New User? Click here.

سيقوم هذا الرابط بتوجيهنا إلى CreateUser.aspx و لكن لا يحق لنا الدخول إلى الرابط CreateUser.aspx بحسب التعريف الذي قمنا به في Web.Config!!

الحل هو التوجه إلى Web.Config و بعد اكتب الكود التالي:

</p>
<p>
 <location path="CreateUser.aspx"><br />
 <system.web><br />
 <authorization><br />
 <allow users="?" /><br />
 </authorization><br />
 </system.web><br />
 </location> 
</p>
<p>

في هذا الكود، اخبرنا ASP.NET بأن صفحة CreateUser.aspx سوف يكون لها خصائص دخول خاصة بها و هي “انه يسمح بتواجد جميع المستخدمين الغير مسجلين لدي“.

لننفذ البرنامج مرة أخرى و لنذهب إلى صفحة CreateUser.aspx … و لنقم بعمل مستخدم جديد … لنسمه test مثلاً … و بعد انشاء هذا المستخدم سوف تظهر لنا الرسالة التالية:

و لكن عند الضغط على Continue لن يحدث شيء لذلك لنغلق التطبيق و نذهب إلى الصفحة CreateUser.aspx و من ثم اختر خصائص الكنترولCreateUser و من ثم في ContinueDestinationPageUrl اختر الصفحة Default.aspx

كما انه يمكنك تغيير كل هذه الخصائص و تحول اللغة إلى العربية إن شئت.

الآن من المفترض ان يعمل كل شيء على ما يرام.

الآن في الجزء الذي كتبناه سابقاً:

</p>
<p>
 <authorization><br />
 <deny users="?" /><br />
 <allow users="*"/><br />
 </authorization> 
</p>
<p>

لنزيل السطر و ذلك سيسمح لجميع المستخدمين الدخول إلى النظام …

في الصفحة Default.aspx اسحب الكنترول LoginView وافتح المثلث الصغير في الركن الايمن العلوي مثل الصورة:

سوف تجد قالبين أحدهما سيظهر للمستخدمين الذي لم يسجلوا الدخول و الآخر للمستخدين الذين سجلوا الدخول … في القالب الخاص للمستخدمين الذيم لم يسجلوا الدخول … اسحب الكنترول Login داخلة و نضيف الرابط مثل صفحة Login.aspx…كما في الصورة:

والآن لنستخدم القالب الآخر، لنسحب الكنترول LoginName و الذي يظهر اسم المستخدم المسجل، و لنكتب قبله Welcome… كما في الشكل:

و في اعلى الصفحة و خارج LoginView1 لنضع الكنترول LoginStatus والذي يظهر وضع المستخدم هل هو مسجل أم لا … كما في الصورة:

الآن لننفذ البرنامج … لنلاحظ شكل الصفحة Default.aspx كما في الشكل:

لاحظ اننا في الصفحة Default.aspx و ان LoginStatus يوجد رابط Login لأننا لسنا مسجلين النظام و الآن لتقم الدخول بأحد الاسماء التي سجلناها في هذا الدرس او الذي سبق …

و بعد تسجيل الدخول لاحظ ان LoginStatus اصبحت Logout لأننى الآن قمنا بالتسجيل …

و قام LoginView باظهار القالب الخاص بـ Loggedin كما في الشكل:

كما ان LoginName اظهر لنا اسم المستخدم الموجود و هو Admin.

و لاحظ انه توجد كنترول خاصة باستعادة كلمة المرور و أخرى خاصة بتغيير كلمة المرور و كلها تعمل بنفس المبداء …

و في الدرس القادم سوف نتحدث عن تحديد صلاحيات أكبر للـ Roles و Users … على مستوى الصفحات و المجلدات …

مع تحياتي … طلال

19 comments
  1. بارك الله فيك شرح جميل
    اليوم انا كنت احاول اعمل صفحه تعرض ال roles والاشخاص المسجلين وحذف واضافه شخص للادمن لاكن للاسف لم انجح فارجو انك تشرح هذه الاليه بشروحاتك القادمه

  2. حياك الله أخوي مساعد … و سعيد بزيارتك …

    في ASP.NET توجد بعض الكلاسات و التي من شأنها التعامل مع Roles باستخدام VB أو C#.
    يمكنك البحث عنها في MSDN و Google.com…

    للأسف طبيعة هذه الدروس تأخذ وقت كبير و الذي أفتقده هذه الأيام …
    إن شاء الله في أقرب فرصة ممكنه سوف أقوم بالكتابة عنها…

    أخوك طلال.







  3. طيب ياطلال لو عملت الكوددا فى البرنامج هتلاحظ حاجة انوا لو وقفت على الصفحة بتاعت الDefault هاتخوش جوهاوهاتتصفح الصفحة عادي مع ااني فى الاول ملما كنت حاطط الكود الاولاني بتاعlogin كان مستحيل اخوش على صفحةdefault الا لازم عاملloginلكن بعد ماعلمت الكود CraeteUserالغت عمل اكوادبتاعت Login احنا عاوزين نعمل الكود حق الصفحةCreateUser بحيث انوا انت لو طلبت تخوش على Default يرفض ويرجعك على login ومن login لو انت مش يوزر معروف الباقى هاتعمل اية لانوا بصراحة انت الباقي شرحوا بطريقة سهلة دية نقطة واقفة معايا واتمنى يااستاذ طلال اعرف حلها لانوا انا متابع جيد لدروسك يعني تلميذ شاطر وبيحل الواجب اول باول ^_^

  4. معلش ياطلال انا فعلا طلعت غلطان لانواطلع فى الاخر فية web system ثانية مساعدة معمولة علشان تساعدنا في اللوكيشين انا طلعت غلطان ومكسوف منك يوم جربت الكود في الويب سيستم المساعدة عرفت اني غلطان متشكر يا مستر طلال

  5. شكراً استاذ / طلال على هذه الدروس الجميلة .و لكن لدي سؤال : إذا اردنا اضافة دور/ role معين لإي مستخدم جديد ( كل المسجلين الجدد )بشكل آلي . كيف يتم ذلك ؟؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *