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

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

تطرقنا في الدوينة الماضية إلى الدرس الأول: إنشاء قاعدة بيانات Membership و Role في ASP.NETو اليوم سوف نتطرق إن شاء الله إلى كيفية تعريف الـ Roles و Members في ASP.NET.

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

الآن افتح الفجول ستديو 2005 أو 2008 أيهما تشاء … أنا سوف استخدم النسخة 2005.

الآن انشئ موقع ويب جديد كما في الصورة:

اختر اسم الموقع و لغة البرمجة التي سوف تستخدمها، أنا سوف اختار اسم “MyMembershipSite” و سوف اختار لغة سي# في هذا الدرس كما في الصورة:

اضغط على الصورة لتكبيرها

ثم اضغط على OK ثم اختر View ثم Solution Explorer إذا لم يكن ظاهراً لديك.

بعد ذلك، بزر الفأرة الأيمن اضغط على الـ Solution ثم Add New Item كما في الصورة:

ثم من النافذة اختر Web Configration File ثم Add و لا تغير شيءكما في الصورة:

اضغط على الصورة لتكبيرها

الآن نحتاج أن نضيف ConnectionString إلى قاعدة البيانات التي انشئناها في الدرس الأول.

نضيف الكود التالي داخل Web.Config:

 

و استبدل [server] باسم الجهاز الذي يوجد فيه قاعدة البيانات. و هذا الكود يخبر ASP.NET بأن قاعدة بياناتنا موجودة في الجهاز [server] و سوف نستخدم قاعدة البيانات التي اسمها MyNewDB و سوف نستخدم توثيق وندوز.

و بعد ذلك في System.Web اكتب الكود التالي:

 

و هذا الكود يخبر ASP.NET بأننا سوف نستخدم مزود للـ Membership و الذي هو SqlMembership (اي يخزن و يقرأ من SQL) و أخبرناه عن طريق الـ ConnectionString بمكان قاعدة البيانات. و كذلك الحال بالنسة للـ RoleManager.

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

الآن شكل Web.config كالتالي:

و من الممكن تحميل ملف Web.Config من الرابط في الاسفل و ذلك للتأكد من الخصائص لديك …

Web.config (2.53 kb)

بعد ذلك اضغط على رز ASP.NET Configration كما هو موجود في المربع الاحمر في الصورة أدناه أو اذهب إلى WebSite ثم ASP.NET Configration .

الآن سوف تفتح لك نافذة Internet Explorer مثل هذه:

اضغط على الصورة لتكبيرها

الآن اذهب إلى الTab العلوي Security كما في الصورة:

الآن التوثيق المستخدم في النظام (و ليس قاعدة البيانات) هو وندوز، و نريد ان نغيره إلى Form و يمكننا ذلك عن طريق تعديل Web.Config مباشرة أو الذهاب إلى Select Authentication Type كما في الصورة:

ثم اختر الاختيار الأول From the Internet كما في الصورة:

و عندما يتم التغيير و عندما تذهب إلى ملف Web.Config سوف تجد رسالة تشبه هذه:

اضغط على الصورة لتكبيرها

و هي تفيد بأنه تم تغيير في ملف web.config، ببساطة اضغط على Yes to All. و هذا لأن ASP.NET Web Admin Tool قام بعمل تغيير على web.config عندما غيرنا توثيق ASP.NET إلى Form بدلاً من Windows.

و الآن من المفترض أن يكون الشكل كالتالي:

اضغط على الصورة لتكبيرها

ثم بعد ذلكلنقوم بإنشاء عدد 2 Role و احدة للـ Admin و الأخرى Users. و ذلك عن طريق الضغط على Create or Manage Roles.

ثم ادخل اسم Role و اضغط على Add كما في الصورة:

و بنفس الطريقة اضف Role اخرى باسم UserRole.

و الآنلدينا 2 Role و 0 User.

و على سبيل التجربة اضف عدد 3 مستخدمين عن طريق الرابط Create User. و اجعل واحد باسم Admin في AdminRole و الآخر User في الـ UserRole و الثالث AnyUser و لا تجعله ضمن أي Role كما في الصورة:

 

اضغط على الصورة لتكبيرها

 

و بعد اضافة الثلاثة مستخدمين سيكون الشكل كالتالي:

و في النهاية لو ذهبت إلى قاعدة البيانات عن طريق الـ MS Sql Server Managment Studio و ذهب إلى قاعدة البيانات MyNewDB و ذهبت إلى الجدول aspnet_Users على سبيل المثال سوف تجد المستخدمين اللذين أضفتهم و كذلك الجدول aspnet_Roles.

في الدرس القادم سوف ندخل بشكل أعمق في ASP.NET و استخدام الـ Login Controls و سوف نرى أيضاً كيف يمكننا تحديد صلاحيات على مستوى الصفحة و على مستوى المجلد أيضاً.

مع تحياتي … طلال الحضبي.

26 comments
  1. لاحظ أننا كتبنا اسم التطبيق و هذا مهم للغاية لكي لا يحدث لك مشاكل أثناء نشر Deploy الموقع مش فاهم الحتة دية يا ستاز طلال ممكن تشرحهالي كمان فى حاجة في دماغي طب احنا دلوقتي قولنا اسم الابلكيشين في ال membership مش فى الroleshipe مع انوا الرول تقريبا هيحتاج ناس برضوا معلش ياطلال اخوك واكل فول غامدي وهايتجنن علشان يفهم ^_^

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

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

    الأمر بسيط… تخيل انك قمت بعمل برنامج على جهازك الشخصي… و قمت بإضافة مستخدمين و كل شيء يعمل كما ينبغي… و لكن عندما تنقل البرنامج إلى Remote Server أو إلى مجد إفتراضي آخر داخل جهازك … سوف تلاحظ انه عند عمل login سوف تظهر رسالة مثل هذه “Login attempt unsuccessful, please try again”
    و السبب أن membership و كذلك Roles … يخزن اسم المستخدم جنباً إلى جنب مع اسم التطبيق Application …

    يمكنك أخذ نظرة على الجدول aspnet_Applications و كذلك aspnet_Users و لاحظ الحقل الموجود في الجدول aspnet_Users باسم ApplicationId.

    اتمنى ان يكون الأمر قد اتضح بشكل أكبر …

    و سعيد بالزيارة و التعليق مرة أخرى …

  3. السلام عليكم ورحمة الله وبركاته معلش لتاخيري فى الرد عليك يا استاذ طلال لا انا فهمت عليك يا استاذ طلال الله ينور على حضرتك بس اجابتك دية فتحت لدماغي اسئلة تانية بس ياريت صدرك يتسع لاسئلتي لانوا انا دماغي دية مش عارف بسبب التفكير مودياني فى الف داهية
    1-طيب ياسيدي قبل كدا ملما كنا مانكتبش Nameapplicaton فى الmempership ازاى كان بيعرف انوا اسم المستخدم دا تبع الابلكيشن MyMembershipSite ويروح مشغلوا ويشتغل من غيرتكون ضايف فى الWebConfiguration اسمالابكليشين يعني سؤالي باختصار طب قبل كدا من غير ملما تضيف اسم المجلد بتاعك(قصدي الابلكيشين) كان بيشتغل كان منين يعرف الجهاز انوا اسم المستخدمين اللى بتحطوهم دا تبع الابلكيشين دا مع الرغم انوا انت مش كاتب اسم الابلكيشين يعني انا بكلم فى حالة ازا ما اشتغلنا على RemoteServer يعني شغالين فى الوضع العادي بتاعنا منين فى الاول كان بيتعرف<اتمنى تكون فهمت سؤالي, 2-طيب لية كتبنافي الmembership اسم الابلكيشن وماكتبناش فى الRoles اسم الابلكيشين ولا هما الاتنين مرتبطين ببعض يعني انوا كفاية اكتب اسم الابلكيشين سواء فى Roles او في الmembership 3-ايه معنى enabled="true مش فاهم معناها يعني ايه اللى موجودة داخل الprovider بتاع Role انا عارف اني انا اثقلت كاهلك بالاسئلة بس انا بحب التفاعل وكمان بصراحة يا طلال اجوبتك لزيزة كل ماتسئل في حاجة تلاقي نفسك بتفتح فى حاجات تانية فعلا العلم ماينتهيش ابدا وكل ماتكتشف اجابة لحاجة بتفتح ليك الاجابة دية الف سؤال تاني لا تتوقعها ربنا يا طلال يثيبك على عملك كمان بفكر بجد ياطلال انوا ملما اخلص كورس البرمجة واشتغل هتعاون معاك فى المدونة بتاعتك وانضم لفريق العمل بتاعها انا شايف انها منظمة وحلوة وافكارها جديدة وبسيطة وعمليتها بس اخلص كور وابدا عمل علشان اعرف ازاى اشتغل معاك على المدونة دية ماتبقاش طماع لوحدك اكسب كمان انا ثواب مش معقول انت تاخود الحسنات دية لوحدك^_^ بالنص بقى

  4. معلش دا توضحي للسؤال الاول في حالات اللى كنا مانكتب فيها Nameapplication وتكتب اسم المستخدم والباس ورد ويشتغل معاك الموقع طيب في ها الحالة منين عرف اسم المستخدم انوا تااابع لاسم الابلكيشين مع انوا مش مسجلين فى الmembership اسم الابلكيشين اتمنى يكون فهمتيني علشان مش عارف هاتفهمني باللهجة المصرية ولا لا^_^ معلش للتطويل

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

    حياك الله أخي أحمد و صراحة سعيد بتفاعلك …

    بخصوص سؤالك، “قبل ما نكتب اسم الابليكيشن منين كان يعرف؟”
    راح يأخذ الـ ApplicationPath أو ما يسمى بالـ vroot في الجهاز المحلي Local Machine.

    و بخصوص ليش ما كتبناها في Role؟
    معليش هذا خطئي … كان لابد ان تكتب…

    و بخصوص enabled=”true”!!
    فهذه لابد ان تكون موجودة لأن role افتراضياً غير مفعله …

    مرة أخرى سعيد بالزيارة و الأسئلة … و حياك الله.

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

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

    سعيد بزيارتك و ردك و الكلام الطيب …

    و أنا لا أريد من وراء هذه المدونة غير الدعاء في ظهر الغيب …

    أسئل الله ان يوفقك …

  8. معلش برضوا ممكن يبقى اللى بيطلع على الموضوع بتاعنا نكملوا بسؤال من عندي لاني برضوا سبحان الله كل ماالواحدبيقول كفاية ويمشي يلاقى تاني فية بالوا حاجة بتدور في راسوا طيب انت حضرتك يااستاذ طلال قولت انوا فى الRole انوا deafult enable=”false” علشان كدا يجب انوا نفعلها ونجعل enable=”true” طب بالنسبة للmembership لية ماعملناش زيها ولا يا استاذ طلال ال default membership= true ومش محتاجة نعمل لل enable=”true” لانهاافتراضيا هيا مفعلة واسف لكثرة اسئلتي بس واللهى اجوبتك سهلة وبتخلي دماغ الواحد يا استاذ طلال يفكر ودماغوا تشتغل واحلى حاجة انوا الانسان يحس بنعمة العقل اللى مدهالوا ربنا

  9. السلام عليكم
    الف شكر على الدروس الرائعة جعلها الله في موازيين حسناتك

    عندي مشروع تخرج واحتاج فيه للـ membership وما كنت اعرف شي عنه وبدأت مع دروسك

    لكن للأسف ما مشي معايا لما افتح التبويب security يطلعلي خطأ:

    Could not find stored procedure ‘dbo.aspnet_CheckSchemaVersion’.

    علما بأن قاعدة البيانات خارجية لكنها شغالة مية مية مع صفحات مشروعنا

    اتمنى القى حل
    وشكرا

  10. أخي الحبيب:
    أسأل الله أن يأجرك..
    كود جملة الاتصال واللي بعده غير موجود كذلك بعض الصور غير موجودة..والموضوع مهم جداااا ونحن في حاجته فياليت فضلا لا امرا تأمن النواقص كي نستفيد الاستفادة القصوى من الموضوع وشكر الله لك اولا واخيرا..

  11. حياك الله أخوي عبدالعزيز .. سعيد بزيارتك و تعليقك … و آسف بخصوص الصور و جملة الاتصال. و لكن الصور جميعها تعمل لدي.
    و بخصوص جملة الاتصال سأحاول إعادة كتابتها قريباً.

    أخوك / طلال.

  12. الشرح واف وجميل جدا ربنا يباركلنا فيك
    بس للأسف أنا عندى لما فتحت الداتا بيز من خلال السيكويل سيرفر لقيت الجداول دى فاضيه تماما من أى داتا ياترى إيه السبب؟

  13. السلام عليكم
    اخي طلال توجد لدي مشكله وهي Could not load type ‘system.web.security.SqlMwmbershipProvider’
    تظهر هذه الرسالة في صفحة security
    لذا ارجو منك ارشادي الى الصواب علما بانني مبتدى
    وهذا هو الكود الذي قمت بكتابته

    وجزاك الله خيرا
    اخوك a7mdOoO

  14. ستاذ طلال مش حقولك الله ينور و شرحك جميل لكن حدعيلك بجد لانك انسان مسلم علي حق هوا دة المسلم الي يفيد و يستفيد من غيرة بعلمة و انا نفسي يكون لية صديق زيك فالحق و انا اسمي عمرو من مصر مبرمج  لسة مبتدء و يشرفني و يسعدني اني اكون صديق ليك لو تحب و اميلي [email protected]و ارجو انك تواصلصدق الله حينما قال ” و علم الانسان ما لم يعلم ” سلام عليكم

  15. السلام عليكم … هناك بعض الاكواد في الدرس غير ظاهرة
    رجاء تعديلها

    و ايضا اريد اعادة نشر هذه الدروس علي المنتدي
    مع ذكر المصدر
    فهل موافقون علي هذا ؟؟
    شكرا

  16. بصراحة انا متفاجئة ان في حدا بيشرح بهذه الطريقة الرائعة بتمني بس ان تصير فيه امكانية لنحميل الدروس لان لما بنسخه علي الورد ما بيطلع بنفس الترتيب وبشكرك كثير وجعله الله في ميزان حسناتك

  17. شكرا على جهودك … دروس منظمة

    هناك مواقع تقدم دروس فيديو على سبيل المثال شبكة موج التقنية

    http://www.mawj.net

    معظم المبرمجين يفضلون دروس فيديو و ليتها تكون باللغة العربية

  18. صباح الخير ..
    الله يعطيك العافيه شرحك واضح ،،
    بس افتقدت لنقطة الاكواد اللي مفروض تنضاف في web.config ,system.web
    ياليت لو ترجع تكتبها لانها عامله بالنسبه ليا اكبر !!
    والخطوات موراضيه تكتمل
    وشاكرة لك

  19. لم استطع التطبيق ويظهر معي خطأ

    (توجد مشكلة في مخزن البيانات المحدد. وقد يكون السبب في ذلك أن اسم الملقم أو بيانات الاعتماد غير صالحة أو أن صلاحية الإذن غير كافية. كذلك قد يكون السبب هو أن ميزة إدارة الأدوار غير ممكّنة. انقر فوق الزر “التالي” ليتم توجيهك إلى صفحة يمكنك منها اختيار مخزن بيانات جديد.

    قد تساعد الرسائل التالية في تشخيص المشكلة: لا يمكن الاتصال بقاعدة بيانات ملقم SQL Server. )

اترك تعليقاً

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

You May Also Like