Dot net In Blue

یکشنبه، آذر ۱۲، ۱۳۸۵

نگاهی دقیق به سرویس شناسایی کاربر در دات نت 2 قسمت نخست

در این سری مقاله میخواهیم درباره سرویس membership و profile در asp.net 2 بحث کنیم ، همانطور که قبلا هم توضیح داده بودم ساختن یک membership در asp.net 2 با درگ کردن چند کنترل از toolbox کنار ویژال استدیو دات نت 2005 به سادگی امکان پذیر است اما بیایید کمی دقیق تر به مسئله نگاه کنیم در این چند مقاله متوالی به صورت دقیق اما موجز به برسی پرافایل و ممبر شیپ در asp.net 2 می پردازیم ، سعی میکنیم در این مقالات تا حد امکان از گفتن جزییات و بدیهیات صرف نظر کنم اما چون این مقالات، مقالاتی پایه می باشند و دوستان در هر سطحی باید از آن استفاده کنند گاهی مجبورم توضیحاتی دهم که ممکن است برای شما امری بدیهی به نظر برسد ! کد ها را با ویژال بیسیک مینویسم (فقط همین یک بار ) چون معمولا دوستانی که C# میدانند از کد های ساده ویژال بیسیک به راحتی سر در می آورند ولی دوستانی که C# نمیدانند معمولا تا C# را میبینند صفحه را میبندند ! و این یک مقاله پایه برای همه است . تعریف membership : ممبرشیب در حقیقت سرویس شناسایی کاربر وب سایت شما است ، در ورژن قبلی asp.net ممبرشیپ تا حدی تعریف شده بود و ما میتوانستیم با برنامه نویسی از این سیستم استفاده کنیم ، در ورژن جاری علاوه بر اینکه سیستم گذشته همچنان پشتیبانی میشود سرویس جدیدی نیز اضافه شده است . در این روش ما نیاز به برنامه نویسی برای شناسایی کاربر نداریم ! در حقیقت کار ها از قبل انجام گرفته است . تعریف role (نقش ) : هر کاربر میتواند در سایت چندین نقش داشته باشد که بسته به این نقش ها دسترسی کاربر به قسمتهای مختلف سایت مجاز یا محدود میشود ، معمولا نقش ها به دو گونه تعریف میشوند :
  • Admin ,PowerUser, NormalUser
  • CanEdit,CanDelete,….
نوع اول کاربران را به مدیر ، ابر کاربر ، کاربر معمولی و... تقسیم میکند ، در این نوع دسترسی دادن معمولا در سایت چند فولدر وجود دارد که هر نوع کاربر به فولدر مخصوص خود دسترسی دارد . در نوع دوم کابران به (میتواند ویرایش کند ، میتواند حذف کند و... ) تقسیم بندی میشوند . چنین دسته بندی معمولا وقتی به کار میرود که بخواهند چندین دسترسی را به کاربری بدهند در صورتی که این دسترسی ها الزاما به کاربر دیگری تعلق نمیگیرد ، برای مثال یک کاربر فقط میتواند ویرایش کند ، یک کاربر فقط میتواند حذف کند و یک کاربر هم ویرایش و هم حذف را در اختیار دارد ( دو نقش Role به خود اختصاص میدهد ). خوب حالا بهتر است وارد عمل شویم و یک سیستم لاگین ساده را به عنوان پایه کارمان باهم ایجاد کنیم ، توجه کنید که حتی یک خط برنامه نویسی هم نخواهیم کرد ! در ویژال استدیو 2005 یک وبسایت جدید ایجاد کنید ، نام آن را membership1 بگذارید و vb.net را به عنوان زبان برنامه نویسی انتخاب کنید . با کلید های Ctrl + Shift + A ( Add new Item ) یک وب فرم جدید به پروژه اضافه کنیدنام آن را Register.aspx بگذارید . از منوی ToolBox سمت چپ ویژال استدیو ، دسته Login ، یک create user name را به داخل صفحه دراگ کنید . (صفحه ثبت نام شما ساخته شد ) یک صفحه جدید دیگر با زدن کلید های Ctrl + Shift + A ایجاد کنید و نام آن را Login.aspx بگذارید ، اینبار از toolbox یک login داخل صفحه درگ کنید، یک لینک هم در این صفحه به صفحه ثبت نام بگذارید . (صفحه لاگین شما هم ساخته شد ) در صفحه default.aspx که هنگام ایجاد پروژه به صورت پیش فرض ایجاد شده بود یک loginName یک LoginStatus و یک loginView را طوری درگ کنید که در هنگام نمایش بتوانید آنها را از هم تشخیص دهید . به محض اینکه نشانگر موس شما روی loginView برود یک مثلث کوچک کنار آن ظاهرمیشود (تصویرزیر: ) روی مثلت کلیک کنید و از داپ دان مقابل Views ، AnonymousTemplate را انتخاب کنید . روی محوطه قابل ویرایش LoginView کلیک کنید و سعی کنید چند در آن قرار دهید (این لینک ها برای تمامی کاربران در دسترس خواهد بود ) حالا دوباره روی مثلث کلیک کنید و از دراپ دان این بار LoggedInTemplate را انتخاب کنید ، دوباره روی محوطه قابل ویرایش LoginView کلیک کنید و سعی کنید چند لینک در آن قرار دهید این لینکها را فقط کاربرانی کع عضو سایت هستند و لاگین کرده اند میتوانند ببینند . اگر همین الان با F5 برنامه را اجرا کنید میبینید که کابری که با آن وارد وینوز شدید به عنوان کاربر لاگین شده شناسایی میشود ، اماچیزی که ما معمولا لازم داریم شناسایی کاربر بر اساس وب فرم ها است نه ویندوز پس از منوی های بالای ویژال استدیو Website را انتخاب کنید و از این منو گزینه asp.net configuration را انتخاب کنید . یک پنجره مرورگر جدیدبه صورت زیر برای شما باز خواهد شد . یکی از کارهایی که این قسمت برای شما انجام میدهد این است که این امکان را به شما میدهد تا بدون نیاز به ویرایش دستی web.config برخی از تنظیمات سایت خود را انجام دهید . روی Security کلیک کنید و در کادر Users مشاهده میکنید که نوشته شده " The current authentication type is Windows. User management from within this tool is therefore disabled. " ، روی Select authentication type کلیک کنید . میخواهیم شناسایی کاربر را از Windows به web Forms تغییر دهیم . بعد از کلیک کردن وارد صفحه ای دیگر میشوید ، دکمه رادیویی From the internet را کلیک کنید و دکمه Done را بزنید . دوباره به صفحه قبلی راهنمایی میشوید ، به کادر Users دقت کنید ! اکنون شما میتوانید کاربر جدید بسازید پس create User را از این کادر کلیک کنید ، توجه کنید که شما برای کلمه عبور نیاز به یک حرف غیر از الفبای عددی دارید (Non-alphanumeric) بعدا خواهید آموخت که چطور تعداد این حروف را افزایش دهید یا حذف کنید فعلا کلمه عبوری مثل "123456&" را انتخاب کنید . و قتی کاربر خود را ساختید پنجره مرورگر را ببنید . حالا با F5 برنامه را اجرا کنید . روی لینک لاگین کلیک کنید ، به صفحه لاگینی که ساخته بودید هدایت میشوید ، با نام کاربری و کلمه عبوری که چند لحظه پیش ایجاد کردید لاگین کنید ، میبینید که به صفحه اول باز میگردید با این تفاوت که loginView به شما لینک های کاربران لاگین شده را نمایش میدهد . و لینک login به logout تبدیل شده است . logout را بزنید و دوباره login را کلیک کنید ، اینبار به قسمت ثبت کاربر جدید بروید و یک کاربر دیگر بسازید ! حالا میخواهیم دو صفحه دیگر به وبسایتمان اضافه کنیم ، بازآوری کلمه عبور و تعویض کلمه عبور : یک وب فرم جدید دیگر به پروژه اضافه کنید نام آن را Changepassword.aspx بگذارید . و کنترل ChangePassword را از toolbox در آن درگ کنید . یک لینک در LoginView صفحه default.aspx قسمت کاربران شناسایی شده به این صفحه بدهید. یک صفحه دیگر ایجاد کنید و نام آن را PasswordRecovery.aspx بگذارید و کنترل PasswordRecovery را نیز از toolbox به این صفحه درگ کنید . در LoginView صفحه default.aspx قسمت کاربران شناسایی نشده به این صفحه و صفحه ثبت نام کاربران لینک بدهید . با F5 دوباره برنامه را اجرا کنید . تا اینجا کمی با کنترل های جدید دات نت 2 آشنا شدیم ، حالا وقت آن است که ببینیم چطور میتوانیم این کنترل هارا فارسی کنیم ، برای نمونه کنترل login را با هم فارسی میکنیم . صفحه login.aspx را باز کنید . سرس این صفحه را ببنید .دوباره به نمای design برگردید ، روی کنترل login رایت کلیک کنید و Properties را انتخاب کنید . از کادر سمت راست:
  • FailureText
  • PasswordLabelText
  • RememberMeText
  • TitleText UserNameLabelText
  • PasswordRequiredErrorMessage
  • UserNameRequiredErrorMessage
را ویرایش کنید و متون فارسی مناسب را در مقابلشان بنوسید . من این کار را برای قسمت لاگین در فایل Membership1 انجام دادم می توانید آن را دانلود کنید و ملاحظه کنید . حالا روباره به نمای Source بروید میبینید که تمام پیامهای فارسی شما آنجا ذخیره شده است . به سادگی نتیجه میگیریم درصورتی که این پیامها تنظیم نشوند پیامهای پیش فرض با زبان انگیلیسی به نمایش در خواهند آمد . کار شما با قسمت شناسایی کاربر پایه تقریبا تمام شده است ، میماند فارسی کردن بقیه فرمها که در صورت تمایل شما به شما کمک میکند بیشتر با این کنترل ها آشنا شوید . خوب تا اینجا برای کسانی که قبلا با دات نت 1 کارکرده اند احتمالا این سوالات پیش خواهد آمد :
  • چطور نام ، نام خانوادگی ، تاریخ تولد و ... را هنگام ثبت نام از کاربر دریافت کنیم
  • چطور به کاربر رول بدهیم
  • چطور با برنامه نویسی اطلاعات کاربر ازجمله نام کاربری را بگیریم
  • اطلاعات کاربر را چطور در دیتابیس خودمان ذخیره کنیم .
  • و...
که جواب تمامی این سوالات را در ادامه خواهیم داد .

1 Comments:

  • چرا این وبلاگ شما آر اس اس نداره یا داره و ما پیدا نمیکنیم؟

    By Anonymous ناشناس, at ۱۲:۵۹ بعدازظهر  

ارسال یک نظر

<< Home