تم الكتابة في جمادى الثانية 29, 1429 02:15

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

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

 تطرقنا في الدوينة الماضية إلى الدرس الأول: إنشاء قاعدة بيانات 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:

<add name="MyNewDBConnectionString" connectionString="Data Source=[Server];Initial Catalog=MyNewDB;Integrated Security=True" />

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

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

<membership defaultProvider="CustomizedProvider">
    <providers>
 <add name="CustomizedProvider"
       type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="MyNewDBConnectionString"
      applicationName="MyMembershipSite"
      minRequiredPasswordLength="5"
      minRequiredNonalphanumericCharacters="0" />
    </providers>
</membership>


<roleManager enabled="true" defaultProvider="CustomizedRoleProvider">
        <providers>
          <add name="CustomizedRoleProvider"
               type="System.Web.Security.SqlRoleProvider"
               connectionStringName="MyNewDBConnectionString" />
        </providers>
</roleManager>

و هذا الكود يخبر 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 و سوف نرى أيضاً كيف يمكننا تحديد صلاحيات على مستوى الصفحة و على مستوى المجلد أيضاً.

 

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

Del.icio.usDigg It!DZone It!Reddit


تم الكتابة في جمادى الثانية 24, 1429 01:35

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

 اليوم سوف اتكلم عن مفهوم Membership و Role Management في بيئة ASP.NET...

كثير من الأحيان نحتاج في برامجنا إلى تحديد مستخدمين للنظام(Members)، و هاؤلاء المستخدمين سوف تكون لهم مجموعة من المهام (Roles) و كل مجموعة منهم سوف تكون لهم خصائص و صلاحيات معينة.

على سبيل المثال، يوجد لدينا نظام إدارة مكتب عقاري، سوف تكون هناك صفحات للمستخدم العادي لكي يبحث عن العروض و تفاصيلها و سوف تكون هناك صفحات أيضاً لمسؤول النظام لكي يعمل على إدارة النظام من خلاله "إضافة عروض" على سبيل المثال.

لابد أن نتأكد في برنامجنا من أن المستخدم العادي للنظام لا يستطيع الوصول إلى صفحات إدارة النظام.

هناك طريقتين لعمل ذلك: الأولى هي أن نقوم بهذه المهمة برمجياً و هي معرضه للأخطاء طبعاً. و الأخرى هي استخدام   ASP.NET Membership &  Roles.

في سبيل استخدام هذه الخصائص لابد لك من وسيلة تخزن فيها اسماء المستخدمين و معلوماتهم، و بالتأكيد سوف نستخدم MS SLQ Server.

في البداية، دعونا نقوم بانشاء قاعدة بيانات باسم MyNewDB "طبعاً لابد من استخدام اسم افضل، و انا استخدمت هذه الاسم لدواعي العرض فقط" كما في الصورة:

الآن لدينا قاعدة بيانات فارغة و نريد من ASP.NET بملئ هذه القاعدة بالجداول المطلوبه، و ذلك عن طريق الأداة aspnet_regsql تستطيع الوصول إليها عن طريق:

 Start ثم All programs  ثم  Microsoft Visual Studio 2005 ثم Visual Studio Tools ثم Visual Studio 2005 Command Prompt. كما في الصورة:

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

 

الان سوف تفتح نافذة اكتب فيها aspnet_regsql كما في الصورة:

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

 

الآن سوف تفتح إداة تكون الجداول كما في الصورة:

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

 

اضغط next ثم اختر الخيار الأول للإضافة كما في الصورة:

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

 

و بعد ذلك اضغط على next ثم ثم باختيار اسم سيرفر قواعد البيانات "إذا كانت قواعد البيانات في نفس الجهاز اكتب localhost" و اختر اسم قاعدة البيانات الفارغة التي قمنا بانشائها كما في الصورة:

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

 

و هنا انا استخدمت توثيق  Windows و بالامكان استخدام توثيق SQL إذا رغبت.

بعد ذلك اضغط على next و في النافذة الأخيرة اضغط على Finish كما في الصورة:

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

 

الآن لو تفحصت قاعدة البينات التي انشئتها سوف تجد جداول Tables و View و Stored Procedures قد تم انشائها و كل ذلك للتعامل مع Roles و الـ Members في ASP.NET. كما في الصورة:

 

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

 

في التدوينة القادمة إن شاء الله سوف أتكلم عن استخدام تعريف الـ Roles و Memebership في ASP.NET.

 

بالتوفيق...

Del.icio.usDigg It!DZone It!Reddit


تم الكتابة في جمادى الأولى 26, 1429 22:44

  

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

 وقعت بالصدفة قبل فترة على موقع VistaDB و الحقيقة فوجئت لما وجدت داخله ...

أولاً: ما هو VistaDB ؟

VistaDB هي قاعدة بيانات SQL ... مصممة خصيصاً لمطوري بيئة الدوت نت NET. تعمل على الـ Microsoft .NET Framework و على Compact Framework الخاصة بالأجهزة الكفية و على Mono على لينكس.

 

 

ثانياًُ: ماذا يميز VistaDB ؟

طبعاً من تعريف VistaDB السابق، نجد انها لم تقدم شيء جديد!! و لكن VistaDB هي قاعدة بيانات خفيفة جداً صغيرة الحجم (أقل من 1 ميقا). و هي ملف DLL واحد فقط. أي ان محرك قواعد البيانات ليس EXE و لكنه ملف DLL واحد فقط تستطيع إدراجه في مشروعك و هو كما قلت أقل من وحد ميقا.

و ما يميز VistaDB أيضاً هو ان قواعد البيانات الخاصة بها هي أيضاً ملف واحد و لا يوجد Log file و Data file و لكن يوجد ملف واحد امتداده VDB3. و تستطيع عمل نسخة إحتياطية لقاعدة بيانات بأمر XCopy أو نسخ الملف الموجود فقط و تستطيع استرجاع قاعدة البيانات بلصق الملف فقط.

VistaDB تستطيع تحمل حجم 4 تيرابايت لكل قاعدة بيانات. و 65,535 جدول لكل قاعدة بيانات و 65,535 عمود لكل جدول و 65,535 Index لكل جدول أيضاً.

تدعم VistaDB النسخة الثالثة SQL-99 و لمزيد من المعلومات عن ذلك يمكنك زيارة الموقع هنا.

كما أن VistaDB تدعم Unicode و ذلك لكتابة باللغة العربية على سبيل المثال.

تستطيع التعامل مع VistaDB عن طريق T-SQL بنفس الطريقة مع MS SQL Server 2005 و تستطيع استخدام CLR باستخدام السي# أو VB.net.

يوجد منها نسخة Exress مجانية و لمزيد من المعلومات عنها تفضل هنا.

كما أن VistaDB مطورة بالكامل باستخدام #C.

و توجد عدد من الأدوات للتطوير باستخدام VistaDB مثل Data Migration Wizard و ذلك لنقل بياناتك من MS Access أو MS SQL Server إلى VistaDB .

كما يوجد Data Builder و التي تعطيك شاشات للتعامل مع قواعد بيانات داخل VistaDB حيث تستطيع إنشاء أو تعديل او حذف جدول كما تستطيع انشاء indexes, triggers, constraints, columns. و تسطيع عمل database encryption من خلالها.

كما انه لا يوجد حد لعدد CPU أو RAM الذي يدعمها.

 

ثالثاً: كيف تعمل VistaDB ؟

كما قلت سابقاً، محرك قواعد بيانات VistaDB هو ملف DLL واحد فقط، و قاعدة البيانات هي عبارة عن ملف VDB3 واحد. و باستخدام اداة مثل ILMerge تستطيع ان تضمن ملف DLL داخل ملف EXE الخاص ببرنامج.

و الشكل أدناه يبين آلية عمل VistaDB و  البرنامج الذي تبنيه. كما يبين الشكل ان VistaDB ستكون جزءً من البرنامج أو الموقع الذي تبنيه.

 

 

 

و عند ذلك لا داعي أن نحمل محرك قواعد البيانات مثلاً MS SQL Server 2005 في جهاز العميل الذي يستخدم الموقع أو البرنامج. كما أنه عند البحث عن مستضيف موقعك الشخصي لن تقلق إذا كان يدعم MS SQL Server أم لا فكل ما تحتاجه هو NET. فقط لكي تعمل VistaDB .

 

اتمنى أن يكون طرحي مفيداً و موفقاً و سوف اختبر المنتج و أبدي لكم رأيي فيه متى ما سمحت الفرصة.

 

 ولمزيد من المعلومات يمكنكم زيارة الموقع الرسمي http://www.vistadb.net/

 

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

Del.icio.usDigg It!DZone It!Reddit


تم الكتابة في ربيع الأول 21, 1429 21:16

 

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

 في هذا المقال سأوجه حديثي بشكل خاص إلى MS SQL Server و لكن المبادئ التي سأذكرها تنطبق على مبادئ أمن المعلومات بشكل عام ...

كثيراً ما نشغل أنفسنا في أمن المعلومات بحفظ المعلومات من الدخول الغير مصرح به، سواء عن الطريق الأفراد أو البرامج. و لكن عندما نأخذ نسخة إحتياطية لقواعد البيانات مثلاً، نأخذها بشكل عادي جداً Plain Text، سواء على شريط Tape, DVD, CD أو في جهازي الشخصي.

و من الممكن أن نحتفظ بالـ Tape أو الـ DVD داخل درج المكتب. و بذلك سهلنا مهمة سرقة بياناتنا بشكل كبير جداً على المتطفلين.

فما على السارق سوى سرقة الـ Tape أو DVD أو أياً كان وسائط التخزين، و عمل استرجاع Restore في جهازة الشخصي، و كل بياناتنا ستكون في متناول يده.

لذلك حماية ملفات الـ Backup يعتبر الخط الأخير من الحماية التي تستطيع عملها على قاعدة بياناتك.

في SQL Server تستطيع عمل Password-Protected Backup Files (ملفات نسخ احتياطي محمية بكلمة مرور) بحيث تضمن عدم التلاعب بملفاتك. و الأضمن أيضاً هوعمل  (تشفير) Encryption لهذه الملفات، بحيث أنه في أسوء الأحوال لو سرق الملف فلن يستطيع السارق مشاهدة البيانات السرية.

طبعاً الـ Encryption لا يجعل الملف محمي بنسبة 100% و لكنه من الممكن أن يؤخر فتح الملف بشكل كبير جداً إن قدرنا ذلك. لذلك استخدم تشفير قوي مثل 3-DES أو AES و تأكد من استخدام مفتاح Key طويل مثل 256bit على الأقل لكي تجعل من فك التشفير مهمة صعبة جداً.

طبعاَ كلما استخدمنا تشفير قوي مثل AES مثلاً و استخدمنا مفتاح مثل 256bit سيؤثر ذلك في الوقت الذي سوف نستغرقة في تشفير بياناتنا و فك تشفيرها و لكن أعتقد أن ذلك مقبول نوعاً ما بما اننا نستخدم ملفات احتياطية Backup .

 

سأحاول في وقت لاحق أن أكتب بعض المقالات عن علم التشفير إن شاء الله تعالى...

 

مع تحياتي,,, طلال.

Del.icio.usDigg It!DZone It!Reddit


تم الكتابة في صفر 22, 1429 21:38

 

كنت قد كتبت في المدونة قبل فترة عن تكنلوجيا قواعد البيانات الناشئة في هذا الرابط ... و من بين هذه التطبيقات الناشئة هي نظم المعلومات الجغرافية.

مع اصدار قواعد البيانات SQL SERVER 2008 قامت شركة مايكروسوفت بدعم هذا النوع من التطبيقات في الـ Data Types الخاصة بها ... و هي SPATIAL DATA.

و في SQL SERVER 2008 يوجد نوعين من الـ SPATIAL DATA هما: Geometry و Geography.

Geometry: و هي تعامل الأرض بشكل مسطح و هي متوافقة مع Open Geospatial Consortium (OGC) .

أما الـ Geography: فهي تعامل الأرض على شكلها الكروي.

الـ geometry و geography تدعم أحدى عشر نوع من البيانات و لكن سبعة منها فقط من الممكن أن تستخدم بشكل مباشر مثل Points, LineStrings, Polygons.

و في الرسم ادناه تبيين للأنواع الإحدى عشر، و التي باللون الأزرق هي التي يمكن التعامل معها فقط.

 

و لمعرفة المزيد عن هذه الأنواع من البيانات:

  • Point
  • MultiPoint
  • LineString
  • MultiLineString
  • Polygon
  • MultiPolygon
  • GeometryCollection
  •  

    و المثال التالي يبين كيف يمكن بناء جدول به هذه البيانات و الإضافة إليه.

    CREATE TABLE dbo.MyLocations
    (MyLocation1 GEOGRAPHY,
    MyLocation2 GEOMETRY);

    INSERT into dbo.MyLocations
    VALUES( ‘POINT(50 50)’, ‘POINT(50 50)’)

    كما يوجد العديد من الأوامر التي وفرتها SQL SERVER 2008 للتعامل مع هذه البيانات الجغرافية مثل:

    STEquals و هي تبين إذا كانت مجموعتين من النقاط متساوية.

    STIntersects وهي تبين ما إذا كانت مجموعتين من النقاط متقاطعة.

    و للمزيد يرجى زيارة هذا الرابط و هذا أيضاً و هذا.

     

    و لمزيد عن المعلومات عن الموضوع ككل يرجى زيارة هذا الرابط: Working with Spatial Data.

     

    أتمنى أن أكون وفقت في هذا الموضوع و قد طرحت البذرة الأولى للبداية فيه.

     

     

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

    Del.icio.usDigg It!DZone It!Reddit

    التصنيف: .NET , قواعد البيانات , SQL Server
    البطاقات: , ,

    البحث



    إخلاء مسؤولية
    جميع الآراء التي تم التعبير عنها هنا هي آرائي الشخصية وهذه الاّراء لا تمثل وجهة نظر عملي على أي حال.
    © جميع الحقوق محفوظة 2008 مدونة طلال
    Sign in