بسم الله الرحمن الرحيم …

هذا هو الدرس الرابع و من المفترض قبل البدأ في هذا الدرس، لابد لك من تقراء هذه الدروس:

الدرس الأول: إنشاء قاعدة بيانات Membership و Role في ASP.NET

الدرس الثاني: تعريف الـ Roles و Members في ASP.NET

الدرس الثالث: التعامل مع الـ Login Controls في ASP.NET

و في الدرس السابق (الثالث) تطرقنا إلى تحديد صلاحيات للمستخدمين في الموقع و لكن بشكل مبسط، و اليوم سوف نتطرق إلى تحديد الصلاحيات بشكل أكبر على المجلدات و الصفحات.

الآن قم بإنشاء مجلد باسم User و آخر باسم Admin داخل مشروع الويب و ذلك من خلال Solution Explorer.

و قم بإنشاء صفحة ويب aspx داخل كل من جلداتAdmin و Userو لتسميها ما تشاء، أنا سوف اسميها Default.aspx.

و داخل مجلد Admin اضغط على زر الفأرة الأيمن و اختر Add New Item … و اختر من داخل النافذة نوع Web configration File … و لندع تسميته الافتراضية web.config.

داخل هذا الملف اكتب الكود التالي داخل و :

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

و هذا التعريف يقول ان هذا المجلد Admin سوف يسمح للدخول من هم في الـ Role الذي اسمه AdminRole و سوف يقوم بمنع باقي المستخدمين من دخول هذا المجلد أو إلى أي من مكوناته.

و لنقم بمثل ذلك في المجلد Users و لنقم باضافة ملف web.config و لنكتب داخله:

</p>
<p>
<authorization><br />
 <allow roles="UserRole, AdminRole" /><br />
 <deny users="*"/><br />
</authorization> 
</p>
<p>

و هنا حددنا انه يسمح الدخول للمستخدمين الموجودين في UserRole و AdminRole و غيرهم سوف يتم منعهم …

لاحظ اننا في المجلد users حددنا عدد 2 Role و هم adminRole و userRole و فصلنا بينهم بفاصلة.

و الان لسبيل التجربة في صفحة Default.aspx الموجودة في المجلد Admin لنكتب Welcome Admin و في في صفحة Default.aspx الموجودة في Users لنكتب Welcome User.

و في صفحة Default.aspx الموجودة في الصفحة الرئيسية للموقع، و داخل LoginView الموجودة داخلها، لنتحول إلى LoggedIn Template.

و لنضف داخلها عدد 2 روابط (HyperLink) و لنغير النص الظاهر إلى Admin و User و لتعجل كل منهما يشير إلى ملف Default.aspx الخاص بالمجلد، مثلاً رابط admin يشير إلى ملف Default.aspx الموجودة في المجلد admin و مثل ذلك للرابط user.

و لتقم الآن بالدخول إلى الصفحة Default.aspx الموجودة في المجلد الرئيسيو لتختبر صلاحيات الصفحات الجديدة بالدخول عن طريق مستخدين ضمن AdminRole و UserRole و غير ذلك.

ملاحظة: عند تحديد صلاحية مجلد، فإن ذلك ينطبق على المجلد و على جميع الصفحات و العناصر الموجودة داخل هذا المجلد.

21 comments
  1. الله ينور عليك ياعم طلال بسم الله مشاء الله ربنا يبارك فيك يارب ويزيدك من علمك بجد كنت مسمتع اوي بالطريقة السهلة اللى بتعملها دية يعني حلاوة فى الشرح وحلاوة فى الفهم والتطبيق والواحد صراحة حس معاك بحلاوة العلم ربنا يجعلك من اهل العلم والعلماء والمفيدين ان شاء لامة محمد(صلى الله علية وسلم)

  2. السلام عليكم …

    حياك الله أخي أحمد …

    في الأول: customErrors يعني إذا طلع خطأ راح تطلع صفحة خطأ خاصة بك و ليست صفحة ASP.NET الافتراضية. مثل هذه: http://static.asp.net/asp.net/images/aspnet_error.jpg

    mode=”RemoteOnly” معناها … راح تطلع الصفحة التي أنشئتها إذا كنت تتصفح عن بعد remote إي لست على نفس السيرفر.
    و فائدتها هي انها لا تعرض تفاصيل الخطأ للمستخدم العادي و لابد ان تكون على السيرفر ليظهر لك تفاصيل الخطأ و هذه مفيده في حالة تتبع الأخطاء.

    و defaultRedirect: معناها افتراضياً في أي خطأ راح يحول المستخدم إلى الصفحة التي اخترتها.
    و الباقي تحدد إذا كان الخطأ “403” معناها انه ليس له صلاحية لذلك تريد ان تظهر له صفحة غير الافتراضية تحددها انت.
    و في حالة “404” يعني المورد المطلوب غير موجود لذلك تريده ان يذهب لصفحة خاصة أخرى و هكذا.

    أرجو أن أكون وفقت في الاجابة على سؤالك.

  3. الف الف شكر يااا اخ طلال واللهى على معلوماتك المفيدة جدا دية بس سؤال هل هناك انواع مختلفة من المود لو فية علشان مااطول عليك انا عاوز مرجع اعرف انواع المود Mode علشان وكمان بالنسبة لل code error اية انواع الاخطاء وارقماها مع الشرح يعني فية مرجع الواحد يقدر يطلع علية علشان يطلع فى الكود بتاع الاخطاء يعني لو فية حاجات تانية عاوز اشوف مرجع اشوف فية ممكن اعرف اشوف الاخطاء ارقامها والتعامل معاها من باب العلم بالشئ انا اسف انى طولت واثقلت كاهلك ^^ بس انتى اللى عودتنا نطمع فيك اكتر وشرحك مفهوم والحمدلله بس مو عاوز اثقل عليك انت بس توريني الطريقة وانا اعرف السكة لوحدي

  4. اخى طلال
    سلام الله عليكم ورحمته وبركاته
    جزاك الله كل خير
    سؤال سريع
    فى حالة Create New account كيف اوجه المستخدم إلى Role محدد مثل user Role
    وهل يمكن عمل اكثر من Create New account فى اكثر من صفحة كل يوجه إلى Role معين
    سؤال عويص
    عند رفع الموقع على الهوست يحدث خطأ فى الويب كونفج وخاصة عند ربط الصفحات بقواعد البيانات
    ارجو زيارة مواقعنا
    http://www.aswnnews.gov.eg
    http://www.aswanedu.gov.eg

  5. السلام عليكم …

    أخي الكريم بخصوص اضافة المستخدم إلى Role فمن الممكن عن طريق الكود التالي:
    Roles.AddUserToRole(“UserName”, “RoleName”);
    و بخصوص “وهل يمكن عمل اكثر من Create New account فى اكثر من صفحة كل يوجه إلى Role معين ”
    الجواب نعم بالطريقة أعلاه.

    أما بخصوص مشكلة الweb.config … فلابد من الحصول صيغة الخطأ بالتحديد.

  6. السلام عليكم ،،
    أسأل الله العلي القدير أن يثيبك ويرفع درجتك
    ويرزقك الذرية الطيبة .

    لدي سؤال يجول بخاطري ، بعد نشر المشروع كيف أستطيع
    التحكم بـ Roles ، والمقصود اعدادت (ASP Configuration)
    أثناء التطوير يمكن الدخول لهذه الصفحة ، لكن بعد النشر كيف أستفيد من خدمات هذه الصفحة ،، وشكراً

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

    جزاك الله كل خير
    فتح الله عليك
    دروس اكثر من رائعة

    بعد اذنك

    كيف ممكن ان نختصر قاعدة البيانات حيث اني لاحظت ان هناك الكثير من الجدوال والدوال ؟؟؟وايضا كيف يمكننا الغاء السؤال التاكيدي عند اضافة مستخدم واضافة اسئلة اخرى كالعمر وغير ذلك ؟؟

    وسؤالي الاخر نفس سؤال الاخ Bassem Mohammed
    كيف يمكن لمدير الموقع حذف واضافة وتغيير صلاحيات المستخدمين من خلال صفحة في مجلده ؟؟

    حبذا لو تشرح لنا كيف نعمل تفعيل الايميل عند استعادة كلمة المرور ؟؟

    جزاك ربي الفردوس الاعلى

  8. السلام عليكم ،،

    أستاذ طلال ياليت ترد على استفسار في المشاركة السابقة

    معتمد على هذي الأجابة في مشاريع كثيرة ،، وشكراً

  9. السلام عليكم…

    أخي باسم، سؤال جيد و مهم و كان بودي ان اكتب موضوع عنه و لكنني للأسف انشغلت قليلاً.
    الرجاء زيارة هذا الرابط:
    http://msdn.microsoft.com/en-us/library/ms998347.aspx
    فلابد لك من عمل صفحة تقوم فيها ببرمجة هذه الاجراءات عن طريق بعض API التي توفرها الدوت نت. مثل Membership.CreateUser يقوم بانشاء مستخدم و هكذا.

    أخي السعد، لا يمكن اختصار قاعدة البيانات على حد علمي. و أما بخصوص البريد الإلكتروني في استعادة كلمة السر يجب استخدام PasswordRecovery Control الموجود في ASP.NET.

    تحياتي لكم

  10. ما شاء الله عليك ربنا يجزيك كل خير ويرفع قدرك يا رب
    ارجو الاستمرار فى الشرح
    دى لينكة فيها 18 درس عن نفس الموضوع يا ريت لو تساعدما فى فهمهم
    ارجواااااااااااااااااا الاستمرار فى الشرح

  11. اشكرك الاخ طلال على هذا المجهود في نشر المعرفة……..
    ارجو منك المواصلة في الدروس بالنسبه للصلاحيات في المجلد admin وuser كيف اتحكم في للوصل لشلشات في userوadmin اتمنى لو مثال بنفس الطريقه
    وشكرا

اترك تعليقاً

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