استفاده از ممبرشیپ از ابتدا تا آپلود آن به هاست

ممبرشیب (Membership) یک تکنولوژی ساخته شده توسط ماکروسافت و طبیعتاَ ASP است که در صورت

استفاده درست از آن میتواند امنیت نسبتا خوبی برای وبسایت شما تامین کند.

استفاده از ممبرشیپ به صورت لوکال ساده اما هنگام آپلود سایت به هاست مشکلاتی را بوجود میاره

مثلا هنگام ورود به قسمت محافظت شده توسط ممبرشیپ حالات زیر پیش میاد:

1- خطای Authentication Required

که با اضافه کردن کد

 بین تگ های باز و بسته system.web دیگه پنجره احراض هویت نمایش داده نمیشه

2- خطای:

Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. Please make sure the user has a local user profile on the computer. The connection will be closed.

این خطا هنگامی رخ میدهد که ممبرشیپ از پایگاه داده لوکال استفاده میکند

متاَسفانه ممبرشیپ به صورت پیشفرض اطلاعات کاربران خود را در پایگاه داده لوکال خود یعنی

فایل ASPNETDB.MDF واقع در پوشه App_Data ذخیره میکند که پس از آپلود سایت بروی هاست این

خطا رخ میدهد

در ادامه مطلب راه حل توضیح داده شده است.

3- خطای:

در این حالت یک خطا رخ داده است ولی به دلیل فعال بودن یک صفحه کلی برای تمام خطا های موجود در سایت

نمایش داده میشود

برای رفع این مسئله میتوان کد زیر را بین تگ های باز و بسته system.web افزود

 

حال شروع به ساخت یک وبسایت محافظت شده توسط ممبرشیپ، میکنیم:

نکته: اگر Microsoft SQL Server 2008 R2 یا نسخه بالاتر آن بر روی سیستم شما نصب نیست قبل از انجام

ادامه مراحل آن را نصب کنید.

ابتدا باید پایگاه داده ممبرشیپ بسازیم

برای اینکار از یک برنامه پیشفرض در ویندوز استفاده میکنیم

این برنامه را میتوانید با جست و جوی فایل aspnet_regsql.exe در درایو ویندوزتان پیدا کنید

در ویندوز7 این فایل واقع در مسیر زیر است:

C:\Windows\winsxs\x86_aspnet_regsql_b03f5f7f11d50a3a_6.1.7600.16385_none_2461659e78807255

و یا میتوانید آن را دانلود کنید.

اکنون برنامه aspnet_regsql را اجرا و مراحل زیر را دنبال کنید:

1- بر روی Next کلیک کنید

2- بر روی حالت Configuration SQL Server for Application Services قرار داده و Next را کلیک کنید

3- در قسمت Server نام سرور را وارد کنید (در صورت صحیح نبودن مقدار پیشفرض میتوانید

این نام را از SQL Server کپی کنید)

اگر میخواهید جداول ASP به پایگاه داده پروژه شما اضافه شود مقدار قسمت Database را برابر نام بانک

مورد نظرتان قرار دهید و اگر میخواهید جداول ASP در یک بانک مجزا ایجاد شوند مقدار قسمت Database را

برابر مقدار پیشفرض آن یعنی قرار دهید

4- بر روی Next کلیک کنید

5- در صورت اجرای درست مراحل پیغام زیر نمایش داده میشود

بر روی Finish کلیک کنید.

 

پس از ساخت پایگاه داده، نوبت به ساخت یک پروژه وب میرسد

برای این کار ابتدا یک پروژه ASP.NET Empty Web Site ایجاد میکنیم:

برای اتصال پروژه به بانک پایگاه داده که قبلاَ ساختیم

ابتدا از پنجره Server Explorer (واقع در View → Server Explorer)

 بر روی  Connect to Database کلیک کرده تا پنجره Add Connection باز شود

سپس بر روی دکمه Change کلیک کرده و نوع اتصال را بر روی حالت Microsoft SQL Server قرار دهید

و دکمه OK را کلیک کنید.

حال پنجره زیر نمایان میشود

در قسمت Server Name نام سرورتان را انتخاب کنید (همان نام سروری که پایگاه داده aspnetdb را بر

روی آن ایجاد کردیم) و دکمه OK را کلیک کنید.

حال باید رشته اتصال را به پروژه معرفی کنیم

برای اینکار فایل Web.Config را از پنجره Solution Explorer باز کرده و بین تگ های باز و بسته

Configuration کد زیر را قرار دهید:

به جای YourConnection رشته اتصال پایگاه داده که قبلاَ ایجاد کردیم را قرار دهید

برای بدست آوردن رشته اتصال بانک مورد نظرتان ابتدا بر روی بانک از پنجره Server Explorer راست کلیک

کرده و گزینه Properties را انتخاب کنید

حال در پنجره Properties مشخصات بانک مورد نظر نمایان میشود

متن روبروی قسمت Connection String را کپی کنید

این متن رشته اتصال پروژه با پایگاه داده شما است

و همچنین کد زیر را در فایل Web.Config بین تگ های باز و بسته system.web قرار دهید

این کدها مربوط به تنظیمات ممبرشیپ هستند

مثلا در این کد بدست آوردن مجدد گذرواژه غیر فعال و تغییر گذرواژه فعال و حداقل تعداد کاراکترها برای گذرواژه 3

کاراکتر و مدت اعتبار ورود کاربر در صورت عدم فعالیت 120 دقیقه است.

اطلاعات بیشتر در این ضمینه

تصویر زیر کد کانفیگ پروژه نمونه است

 

خوب حالا نوبت به ساخت فرم ها میرسه

برای ساخت صفحه ورود و... میتوان از ابزار آماده ASP استفاده یا خودتون با کدنویسی این کار رو انجام بدید

در اینجا برای سهولت کار از ابزار ASP استفاده میکنیم

کار با ابزار Login در Toolbox ساده و به نظرم نیازی به توضیح نیست

در شاخه اصلی سایت ابتدا یک فرم به نام Default.aspx (به زبان VB) و یک پوشه به نام UserForms ایجاد کنید

سپس در پوشه UserForms یک فرم به نام Home.aspx ایجاد کنید، مانند تصویر زیر

در فرم Default.aspx به جای کدهای ASP پیشفرض کد زیر را کپی کنید

و همچنین در فرم Home.aspx به جای کدهای ASP پیشفرض کد زیر را کپی کنید

بر روی فرم Default.aspx راست کلیک کرده و گزینه Set As Start Page را کلیک کنید.

حالا نوبت به تعریف کاربران و قوانین سایت میرسه:

از سربرگ Website گزینه ASP.NET Configuration را انتخاب میکنیم

پس از باز شدن صفحه باید رول ها یا نقش های وبسایت را بسازیم

برای این کار از صفحه باز شده سربرگ Security را انتخاب و از قسمت Roles بر روی Enable roles کلیک کرده

حال Create or Manage roles را انتخاب میکنیم تا صفحه ساخت رول ها باز شود

برای اسم رول Manager را تایپ میکنیم (نام دلخواهتان)

سپس بر روی Add Role کلیک میکنیم

حال مجدد بر روی سربرگ Security کلیک کرده و از قسمت Access Rules گزینه Create access rules را

انتخاب میکنیم

در قسمت Select a directory for this پوشه UserForms را انتخاب کرده و در قسمت

Rule applies to گزینه Role و سپس نقش Manager را انتخاب و در قسمت Permission گزینه Allow را

انتخاب و تاَیید کنید

حال مجدداَ به صفحه Create access rules رفته و پوشه UserForms را انتخاب و اینبار از قسمت

Rule applies to گزینه All users را انتخاب و همچنین از قسمت Permission گزینه Deny را انتخاب و

تاَیید کنید

همچنین میتوانید این قوانین را در صفحه Manage access rules مشاهده و ویرایش کنید.

برای تعریف کاربران از سربرگ Security به صفحه Create User رفته و مشخصات کاربری دلخواهتان

را وارد و نقش Manager را انتخاب سپس بر روی Create User کلیک کنید

ما در اینجا مشخصات زیر را وارد میکنیم:

User Name:irprog.ir

Password:123

Confirm Password:123

E-mail:s@y.com

Role:Manager

اکنون وقتی پروژه را اجرا و مشخصات را وارد میکنید باید صفحه Home.aspx باز شود.

اگر همه مراحل را درست انجام داده اید و پروژه بدون خطا اجرا میشود دیگر وقت آن رسیده که پروژه را به روی

هاست انتقال دهیم

در این آموزش ما از کنترل پنل پلسک (Plesk) استفاده میکنیم و امید است که عزیزان با این پنل مقداری آشنایی داشته باشند

برای انتقال پروژه به هاست، فایل های پوشه اصلی پروژه را در فایل زیپ کپی کرده و به پنل پلسک وارد شوید

سپس به سربرگ Files رفته و پوشه httpdocs را انتخاب کنید

نکته: بهتر است فایل های قبلی موجود در پوشه httpdocs را به یک فایل زیپ انتقال دهیم تا با پروژه جدید

ادغام نشوند.

 بر روی کلیک کرده و فایل زیپ حاوی پروژه ممبرشیپ را انتخاب و تاَیید کنید تا آپلود انجام بگیرد

 سپس فایل زیپ آپلود شده را انتخاب و از قسمت  گزینه  را انتخاب کنید تا فایل

زیپ، Extract شود

حال باید پایگاه داده را به هاست منتقل کنیم

ولی ابتدا یک پایگاه داده خالی در هاست میسازیم و سپس بانک مورد نظر را در آن Restore میکنیم

 برای اینکار در کنترل پلسک از سربرگ Websites & Domains گزینه  را انتخاب کنید تا صفحه

Databases باز شود و سپس بر روی  کلیک کنید

در قسمت Database name نام پایگاه داده خود را وارد نمایید

نکته: توجه داشته باشید که هر نامی برای بانک خود انتخاب کنید نام وبسایت شما به آن اضافه میشود

مثلاَ ما نام Membership را وارد میکنیم ولی نام irprogir_Membership ثبت میشود.

قسمت Type را بر روی Microsoft SQL Server قرار دهید

قسمت Database server را بر روی Local MS SQL Server قرار دهید

در قسمت Database user name نام کاربری پایگاه داده خود را وارد نمایید

نکته: توجه داشته باشید که هر نامی برای نام کاربری بانک خود انتخاب کنید پنج حرف اول نام وبسایت شما

به آن اضافه میشود، مثلاَ ما نام User را وارد میکنیم ولی نام irpro_User ثبت میشود.

در قسمت New password گذرواژه بانک خود را وارد نمایید و در Confirm password آن را تکرار نمایید

نکته: برای جلوگیری از هک پایگاه داده خود حتماَ برای آن رمز عبور مناسب قرار دهید.

حال برنامه SQL Server را اجرا کرده و از قسمت Databases بر روی پایگاه داده ای که در مراحل قبل

ساخته ایم راست کلیک و بر روی گزینه Tasks رفته و سپس از آن گزینه Back Up را انتخاب نمایید

تنظیمات پیشفرض این صفحه نیازی به تغییر ندارند، فقط به آدرس مسیر موجود در Destination توجه کنید

چون فایل پشتیبان پایگاه داده شما در این مسیر قرار داده میشود سپس تاَیید کنید

در صورت اجرای درست عملیات پیغام زیر برای شما نمایان میشود

حال نوبت Restore کردن پایگاه داده در سیستم خود به پایگاه داده در هاست است

 برای این کار مجدداَ به سربرگ Websites & Domains رفته و از آنجا قسمت  را باز میکنیم

در صفحه Backup Manager و در سربرگ Server Repository بر روی  کلیک کرده و

  را انتخاب نمایید

 حال بر روی کلیک کرده و در بخش Database name نام پایگاه داده ای که در هاست

ساخه اید انتخاب و در بخش Database backup file بر روی Browse کلیک کرده و فایل پشتیبان گرفته شده

در SQL Server را از همان مسیر داده شده در قسمت Back Up ، انتخاب و تایید کنید

پس از تاَیید در این مرحله:

تیک Confirm the restoration را زده و تاَیید کنید تا اطلاعات جدید جایگزین اطلاعات قدیم در پایگاه داده

مورد نظر شوند.

حال باید رشته اتصال با دیتابیس را تعیین کنیم

این کار را میتوان از طریق صفحه ASP.NET Settings و یا مستقیماَ فایل web.config را ویرایش کرد

ما در اینجا از روش اول استفاده میکنیم

 ابتدا از سربرگ Websites & Domains گزینه  را انتخاب کنید

در صفحه ASP.NET Configuration for Website و در قسمت Connection string manager

مقدار رشته اتصال با نام LocalSqlServer را حذف کرده

و به جای آن کد زیر را کپی کنید

شما عزیزان باید کد رشته اتصال بالا را برابر پایگاه داده ای که ساخته اید تغییر دهید

به اینصورت که به جای irprogir_Membership نام پایگاه داده ای که در هاست ساخته اید و به جای

irpro_User نام کاربری و به جای MyPassword گذرواژه ای که برای اتصال به پایگاه داده مورد نظر

قرار داده اید را جایگزین و تاَیید کنید.

خوب دیگر کار تمام شده

اکنون آدرس وبسایتتان را وارد کنید تا نتیجه را ببینید

اگر همه مراحل را درست انجام داده باشید در ابتدا صفحه زیر برای شما نمایان میشود

و پس از ورود نام کاربری و گذرواژه تصویر زیر برای شما نمایان میشود

پروژه این مبحث را برای شما عزیزان گذاشته ام تا در صورت نیاز دانلود کنید(به صورت لوکال است)

لینک دانلود پروژه

همچنین یک صفحه ASP برای مدیریت داده های ممبرشیپ که میتوان از آن در سایت چه به صورت لوکال و چه در

هاست استفاده نمود، طراحی کردم که بخصوص برای راه اندازی اولیه سایت بسیار کاربرد دارد (به دوستان توصیه

میکنم دانلود و استفاده و کدهای آن را برای یادگیری بیشتر تحلیل کنند)

لینک دانلود صفحه مدیریت داده های ممبرشیپ

امیدوارم این پست لا اقل یکی از مشکل های طراحی وب شما را حل کرده باشد

 

موفق و پیروز و سربلند باشید.



بازگشت
 نوشته شده توسط سعید در تاریخ 30/06/1393










© Copyright 2014 irprog ®
Designed & Owner By Saeed Bavi Nejad