وقتی در یک نرم افزار ASP.NET با بسترهای عضویت و نقشها کار میکنید، انجام جزییات توسط تهیه کننده کپسوله شده است. در بحث های آینده ما از طریق کلاس های Membership و Roles در بستر .NET با بسترهای عضویت و نقش ها ارتباط برقرار می کنیم. وقتی که ما از رابط سطح بالا استفاده میکنیم، نیازی نیست که نگران جزییات سطح پایین باشیم، مانند اینکه توسط SqlMembershipProvider و یا SqlRoleProvider چه پرس و جوهایی اجرا می شوند و یا چه جدول هایی تغییر می کنند. بر این اساس، ما می توانیم با اطمینان از بسترهای عضویت و نقش ها بدون کاوش کردن در شمای بانک اطلاعاتی که در گام دوم ایجاد کردیم، استفاده کنیم. وقتی جدول ها را برای ذخیره دادههای برنامه ایجاد میکنیم، ممکن است نیاز داشته باشیم که موجودیت هایی را برای گزارش به کاربران و یا نقش ها ایجاد کنیم. این کار کمک میکند که با SqlMembershipProvider و SqlRoleProvider آشنایی داشته باشیم برای وقتی که می خواهیم کلید خارجی بین جدول های داده برنامه و جدول هایی که در گام دوم ایجاد کردیم، برقرار کنیم. افزون بر آن، در مواقعی نادر ممکن است نیاز داشته باشیم با محل نگهداری نقش ها و کاربرها به طور مستقیم در سطح بانک اطلاعاتی ارتباط برقرار کنیم (به جای استفاده از کلاس های Membership و Roles).
SqlMembershipProvider باید جدولها، نماها و رویههای ذخیره شده خاص خود را در محل ذخیره کاربران ایجاد کند. بدین منظور میتوان از ابزار aspnet_regsql.exe در مسیر %WINDIR%\Microsoft.Net\Framwork\v2.0.50727 استفاده کرد.
هنگام استفاده، ابزار aspnet_regsql.exe از ما میخواهد که نام سروری که پایگاه داده در آن قرار دارد، مشخصات اعتبارنامه امنیتی برای اتصال به پایگاه داده و نام پایگاه داده را مشخص کنیم.
برای افزودن SqlMembershipProvider از مسیر گفته شده ابزار مورد نظر را اجرا کنید. یک ویزارد برای شما به نمایش درمیآید.
در مرحله دوم، پرسیده میشود که میخواهید SqlMembershipProvider را نصب کنید و یا آن را حذف کنید. چون ما میخواهیم جدولها، نماها و رویههای ذخیره شده مورد نیاز SqlMembershipProvider را نصب کنیم، گزینه اول یعنی “Configure SQL Server for application services” را انتخاب میکنیم.
پس از وارد کردن اطلاعات پایگاه داده، Next را بزنید. در مرحله آخر خلاصهای از اطلاعات نمایش داده میشود. پس از پایان یافتن ویزارد، به Database Explorer مراجعه کنید. خواهید دید که جدولها، نماها و رویههای ذخیره شده به پایگاه داده اضافه شده است.
تا اینجا ما پایگاه داده مورد نیاز SqlMembershipProvider را ایجاد کردیم اما نیاز است که برای بستر عضویت مشخص کنیم که از SqlMembershipProvider استفاده کند و SqlMembershipProvider از پایگاه داده SecurityTutorials بهره برد.
گام اول: تعیین محل نگهداری کاربران
دادههای یک برنامه ASP.NET معمولا در تعدادی جدول درون یک پایگاه داده نگهداری میشوند. هنگام ایجاد شمای[1] پایگاه داده SqlMembershipProvider ما باید تعیین کنیم که در پایگاه داده برنامه قرار گیرد و یا یک پایگاه داده جدا ایجاد شود.
پیشنهاد ما، به دو دلیل زیر قرار دادن در پایگاه داده برنامه است:
1- نگهداشت پذیری: برنامهای که دادههای آن در یک پایگاه ذخیره شده باشد، بهتر درک، نگهداری و گسترش داده میشود.
2- ارتباطات یکپارچه: با نگهداری جدولهای عضویت در یک پایگاه داده همانند جداول خود برنامه، امکان ایجاد کلیدهای خارجی بین کلیدهای اصلی جدولهای عضویت و جدولهای دادهای برنامه به وجود میآید.
ایجاد پایگاه داده
برنامهای که تا اینجا ایجاد کردیم نیاز به پایگاه داده نداشت. اکنون برای ذخیره کاربران به پایگاه داده نیاز داریم.
در solution explorer بر روی پوشه App_Data راست کلیک کرده و Add New Item را انتخاب کنید (اگر در پروژه شما پوشه App_Data وجود ندارد، روی نام پروژه راست کلیک کرده و از منو ASP.NET Folder گزینه App_Data را انتخاب کنید). از کادر محاورهای به نمایش درآمده، SQL Database را انتخاب و نام آن را SecurityTutorials.mdf قرار دهید. ما شمای SqlMembershipProvider را درون این پایگاه داده ایجاد میکنیم.
اضافه شدن یک پایگاه داده به پوشه App_Data باعث میشود به طور خودکار در Database Explorer نمایش داده شود (در نسخههای غیر Express این محل Server Explorer نامیده میشود). به Darabase Explorer رفته و پایگاه داده SecurityTutirials را باز کنید. مانند شکل زیر پایگاه داده به صورت خالی نمایش داده میشود، بدون جدول، نما و رویههای ذخیره شده.
