آموزش ASP.NET

آموزش ASP.NET متفاوت از آنچه جاهای دیگر می بینید!

آموزش ASP.NET

آموزش ASP.NET متفاوت از آنچه جاهای دیگر می بینید!

گام چهارم: ایجاد یک کاربر جدید با برنامه‌نویسی

برای ایجاد یک حساب کاربری جدید از طریق بستر عضویت از متد CreateUser از کلاس Membership استفاده می‌کنیم. این متد دارای پارامترهای ورودی برای نام کاربری، گذرواژه و دیگر اطلاعات وابسته به کاربر است.

متد CreateUser دارای چهار سربار است که هرکدام تعداد متفاوتی از پارامترهای ورودی را قبول می‌کنند:

·    CreateUser (username, password)

·    CreateUser (username, password, email)

·    CreateUser (username, password, email, passwordQuestion, passwordAnswer, isApproved, MembershipCreateStatus)

·    CreateUser (username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, MembershipCreateStatus)

به این دلیل چهار سربار وجود دارند که اطلاعات مورد نیاز برای ایجاد یک حساب کاربری جدید به تنظیمات پیکربندی تهیه کننده بستر عضویت بستگی دارد.

یکی از تنظیمات پیکربندی تهیه کننده عضویت که مشخص می‌کند از کدام سربار CreateUser باید استفاده شود، نوع تنظیم requiresQuestionAnswer است. اگر مقدار requiresQuestionAnswer برابر true (مقدار پیش فرض) باشد، هنگام ایجاد یک کاربر باید یک پرسش امنیتی و پاسخ آن مشخص شوند. این اطلاعات هنگام تغییر و بازنشانی گذرواژه مورد استفاده قرار می‌گیرند. در این مواقع پرسش امنیتی که مشخص شده نمایش داده می‌شود و کاربر باید جوابی که هنگام ایجاد کاربر به این پرسش داده را وارد کند. در نتیجه، اگر requiresQuestionAnswer برابر true تنظیم شده باشد، اگر دو سربار اول ایجاد کاربر فراخوانی شوند، سیستم اعلام خطا می‌کند؛ زیرا پرسش و پاسخ امنیتی داده نشده است.

برای روشن شدن بحث استفاده از متد CreateUser یک رابط کاربری ایجاد کاربر ایجاد می‌کنیم. صفحه CreatingUserAccounts.asxp در پوشه Membership را باز کرده و کنترل‌های زیر را به آن اضافه کنید:

  •   A TextBox named Username 
  •   A TextBox named Password, whose TextMode property set to Password 
  •   A TextBox named Email 
  •  A Label named SecurityQuestion with its Text property cleared out. 
  •   A TextBox named SecurityAnswer 
  • A Button named CreateAccountButton whose Text property is set to “Create the User Account” 
  • A Label control named CreateAccountResults with its Text property cleared out

 

 

 

برچسب SecurityQuestion و جعبه متن SecurityAnswer برای نمایش پرسش امنیتی مشخص شده و دریافت جواب آن گذاشته شده‌اند. پرسش امنیتی می‌تواند توسط خود کاربر مشخص گردد و هرکس پرسش خودش را ایجاد کند. در اینجا ما به طور عمومی برای همه پرسش “What is your favorite color?” را مطرح می‌کنیم. بدین منظور در رویداد بارگذاری صفحه متن مربوط به برچسب را برابر پرسش قرار می‌دهیم:

const string passwordQuestion = "What is your favorite color";

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

SecurityQuestion.Text = passwordQuestion;

}

و برای رویداد کلیک دکمه کدهای زیر را می‌نویسیم:

protected void CreateAccountButton_Click(object sender, EventArgs e)

{

MembershipCreateStatus createStatus;

MembershipUser newUser =

Membership.CreateUser(Username.Text, Password.Text,

Email.Text, passwordQuestion,

SecurityAnswer.Text, true,

out createStatus);

switch (createStatus)

{

case MembershipCreateStatus.Success:

CreateAccountResults.Text = "The user account was successfully created!";

break;

case MembershipCreateStatus.DuplicateUserName:

CreateAccountResults.Text = "There already exists a user with this username.";

break;

case MembershipCreateStatus.DuplicateEmail:

CreateAccountResults.Text = "There already exists a user with this email address.";

break;

case MembershipCreateStatus.InvalidEmail:

CreateAccountResults.Text = "There email address you provided in invalid.";

break;

case MembershipCreateStatus.InvalidAnswer:

CreateAccountResults.Text = "There security answer was invalid.";

break;

case MembershipCreateStatus.InvalidPassword:

CreateAccountResults.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character.";

break;

default:

CreateAccountResults.Text = "There was an unknown error; the user account was NOT created.";

break;

}

}

عملیات رویداد کلیک با تعریف یک متغیر به نام createStatus از نوع MembershipCreateStatus آغاز می‌شود. MembershipCreateStatus یک شمارنده است که وضعیت عملیات CreateUser را نشان می‌دهد. برای مثال؛ اگر حساب کاربری با موفقیت ایجاد شود، مقدار MembershipCreateStatus برابر Success می‌شود؛ اگر عملیات به دلیل وجود یک کاربر با نام کاربری مشابه تمام نشود، مقدار MembershipCreateStatus برابر DuplicateUserName می‌شود. در سربار ایجاد کاربر که ما استفاده می‌کنیم، نیاز است که مقدار MembershipCreateStatus به متد ایجاد کاربر به عنوان پارامتر out ارسال شود. این پارامتر درون متد CreateUser مقدار مناسب می‌گیرد و ما بعد از فراخوانی این متد می‌توانیم با بررسی مقدار آن مشخص کنیم که ایجاد کاربر با موفقیت بوده است یا نه.

بعد از فراخوانی CreateUser با استفاده از دستور switch مقدار creatStatus بررسی گشته و پیام متناسب با آن به کاربر نمایش داده می‌شود.

 

 

 

 

 

 

 

 

 

 

 

 

پس از ایجاد چند کاربر با مراجعه به SecurityTutorials.mdf و جداول aspnet_Users و aspnet_Membership از ایجاد شدن آن اطیمنان حاصل کنید.

 

 

 

اضافه کردن هدایت کاربران به صورت سلسله مراتبی

(در آموزش اصلی به زبان انگلیسی لغت breadcrumb آورده شده که بنده هیچ معادل فارسی برای آن پیدا نکردم. حتی در دیکشنری انگلیسی مایکروسافت هم این لغت وجود ندارد. تیتر اصلی این بخش Adding Breadcrumb Navigation است که من به صورت فوق ترجمه کرده‌ام. خوشحال می‌شوم اگر دوستان ترجمه بهتری ارائه دهند.)

هدایت سلسله مراتبی، یک رابط کاربری هدایت می‌باشد که با امکان دسترسی سریع، محل صفحه جاری را در سلسله مراتب سایت نشان می‌دهد. کنترل SiteMapPath از بستر نقشه سایت برای تعیین محل صفحه در نقشه سایت استفاده کرده و سپس آن را نمایش می‌دهد.

کدهای زیر را به Master Page اضافه کنید:

<div id="header">

<span class="title">User Account Tutorials</span><br />

<span class="breadcrumb">

<asp:SiteMapPath ID="SiteMapPath1" runat="server">

</asp:SiteMapPath>

</span>

</div>

گلایه از ...

 

کاری که من در این وبلاگ انجام می دهم عمل کردن به این دستور معصوم است: 

 

زکات علم، نشر آن است. 

 

 

وقتی بین دو یادداشت چند روز فاصله افتاد، بعضی از دوستان نظر گذاشته اند که زودتر ادامه بدهید. البته یک تشکر خشک و خالی هم کرده اند. 

 

ولی واقعا آدم دلسرد می شود؛ وقتی در روز چیزی حدود 10 نفر بازدید کننده داشته باشی، بعضی هم منتظر یادداشت بعدی باشند؛ ولی تا  الان فقط 9 نفر در نظر سنجی شرکت کنند و هیچ کسی هم  زحمت کلیک کردن روی +1 (مربوط به گوگل) را به خودش ندهد. 

 

واقعا چه آدمهای هستیم ...