آموزش ASP.NET

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

آموزش ASP.NET

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

تصمیم گیری در صورتی که اعتبارنامه معتبر باشد

ما برای اینکه بتوانیم تعیین کنیم که نام کاربری و رمز عبور درست است نیاز داریم که اعتبارنامه‏های کاربران در محلی ذخیره شود تا بتوانیم نام کاربری و رمز عبور را با آنها مقایسه کنیم.

تا قبل ازASP.NET 2.0 ، توسعه دهندگان مجبور بودند خودشان محلی برای نگهداری اعتبارنامه‏های کاربران ایجاد کنند و کدهایی بنویسند که اعتبار نام کاربری و رمز عبور وارد شده را تعیین کند. بیشتر توسعه‏دهندگان اطلاعات کاربران را در یک پایگاه داده شامل یک جدول با نام Users با ستون‏هایی مانند UserName, Password, Email, LastLoginDate و از این دست، می‏ساختند. این جدول برای هر کاربر یک رکورد داشت. نام کاربر و رمز عبور وارد شده در قالب یک پرس و جو[1] از پایگاه داده چک می‏شد، به این صورت که نام کاربر در داده‏ها وجود داشته باشد و سپس رمز عبور آن نیز صحیح باشد. باASP.NET 2.0  توسعه دهندگان باید یکی از تهیه کنندگان عضویت را برای ذخیره کاربران استفاده کنند. در حال حاضر با فراخوانی کلاس عضویت[2] و متد تایید اعتبار کاربر[3] به سادگی اعتبارنامه کاربر را تعیین اعتبار می‏کنیم. متد تایید اعتبار کاربر، یک مقدار بولی که تعیین کننده درستی اعتبار نام کاربر و رمز عبور است را برمی‏گرداند.

در حال حاضر به وسیله کدهای داخل خود صفحه ورود احراز هویت را انجام می‏دهیم. کدهای زیر در رویداد کلیک دکمه تایید نوشته شوند: 

   

 

protected void LoginButton_Click(object sender, EventArgs e)

{

// Three valid username/password pairs: Scott/password, Jisun/password, and Sam/password.

string[] users = { "Scott", "Jisun", "Sam" };

string[] passwords = { "password", "password", "password" };

for (int i = 0; i < users.Length; i++)

{

bool validUsername = (string.Compare(UserName.Text, users[i], true) == 0);

bool validPassword = (string.Compare(Password.Text, passwords[i], false) == 0);

if (validUsername && validPassword)

{

// TODO: Log in the user...

// TODO: Redirect them to the appropriate page

}

}

// If we reach here, the user's credentials were invalid

InvalidCredentialsMessage.Visible = true;

}

 

همانگونه که می‏بینید سه حساب کاربری معتبر وجود دارد: Scott, Jisum و Sam و رمز عبور همه آنها password است. برنامه در داخل یک حلقه، درون آرایه‏های users و passwords را جهت مطابقت نام کاربر و رمز عبور معتبر می‏کاود. اگر نام کاربر و رمز عبور معتبر بود، ما باید کاربر را وارد و سپس به صفحه مورد نظر هدایت کنیم. اگر اعتبارنامه نامعتبر بود، برچسب InvalidCredentialsMessage را نمایش می‏دهیم.  

اشاره کردم که وقتی کاربر اعتبارنامه معتبر وارد می‏کند به صفحه مناسب هدایت می‏شود. فکر می‏کنید صفحه مناسب چیست؟ به یاد دارید که، وقتی که کاربر می‏خواهد صفحه‏ای که برای دیدن آن مجوزدهی نشده است را ببیند، FormsAuthenticationModule به طور خودکار او را به صفحه ورود هدایت می‏کند. هنگام انجام این کار، FormsAuthenticationModule نشانی مورد درخواست را در رشته پرس و جو از طریق پارامتر ReturnUrl نگهداری می‏کند. به این معنی که اگر کاربر بخواهد صفحه ProtectedPage.aspx را که برای آن مجوزدهی نشده است را ببیند، FormsAuthenticationModule او را به نشانی زیر هدایت می‏کند:

Login.aspx?ReturnUrl=ProtectedPage.aspx

به محض ورود موفقیت آمیز، کابر باید به ProtectedPage.aspx هدایت شود. ممکن است کاربر به خواست خود بخواهد اول صفحه ورود را ببیند، در این صورت بعد از ورود، کاربر باید به شاخه ریشه، صفحه Default.aspx، فرستاده شود.


[1] Query

[2] Membership class

[3] ValidateUser method

مرحله سوم: ساخت صفحه ورود

به منظور پشتیبانی از احراز هویت فرم‏ها سایت ما به صفحه ورود نیاز دارد. پیش از این گفته شد اگر کاربر بخواهد صفحه‏ای که مجوز دیدن آن را ندارد، ببیند، FormsAuthenticationModule به طور خودکار او را به صفحه ورود هدایت می‏کند. همچنین، کنترل‏هایASP.NET  وجود دارند که یک پیوند به صفحه ورود برای کاربران ناشناس نشان می‏دهند. حالا پرسش این است، نام و آدرس صفحه ورود چه باید باشد؟

به طور پیش فرض، سامانه احراز هویت فرم‏ها صفحه ورود را در شاخه ریشه و با نام Login.aspx در نظر می‏گیرد. اگر شما می‏خواهید از یک نام و آدرس متفاوت دیگر برای صفحه ورود استفاده کنید، می‏توانید آن را در Web.config تعیین کنید.

صفحه ورود سه کار انجام را می‏دهد:

1- ایجاد یک رابط کاربری که به کاربر اجازه می‏دهد اعتبارنامه‏اش (نام کاربری و رمز عبور) را وارد کند.

2- تعیین کند که آیا اعتبارنامه کاربر معتبر است.

3- با ایجاد برچسب احراز هویت فرم‏ها، کاربر را وارد سایت کند.

ایجاد رابط کاربری صفحه ورود

یک صفحه جدیدASP.NET  با نام Login.aspx ایجاد و صفحه Site.master را به آن اعمال کنید.

 

 

 

معمولا رابط کاربری صفحه ورود شامل دو جعبه متنی[1]، یکی برای نام کاربری و دیگری برای رمز عبور، و یک دکمه[2] برای تایید کردن است. وب سایت‌ها در بیشتر مواد یک CheckBox با عنوان «مرا به خاطر بسپار» دارند که اگر تیک خورده باشد در اجرا شدن بعدی مرورگر برچسب احراز هویت وجود خواهد داشت.

در این زمان صفحه خود را مطابق کدهای زیر طراحی می‏کنیم:  

 

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">

<h1>Login</h1>

<p>Username: <asp:TextBox ID="UserName" runat="server"></asp:TextBox></p>

<p>Password: <asp:TextBox ID="Password" runat="server"TextMode="Password">

</asp:TextBox></p>

<p><asp:CheckBox ID="RememberMe" runat="server" Text="Remember Me"/>&nbsp;</p>

<p><asp:Button ID="LoginButton" runat="server" Text="Login" OnClick="LoginButton_Click" />&nbsp;</p>

<p><asp:Label ID="InvalidCredentialsMessage" runat="server" ForeColor="Red" Text="Your username or password is invalid. Please try again." Visible="False"></asp:Label>&nbsp;</p>

</asp:Content> 

 



[1] Text Box

[2] Button

مرحله دوم: فعال کردن احراز هویت فرم‏ها

مرحله دوم بعد از ساخت وب سایت فعال ساختن احراز هویت فرم‏ها است. پیکربندی احراز هویت برنامه در عنصر <authentication> در Web.config انجام می‏شود. عنصر <authentication> یک مشخه به نام mode دارد که مدل احراز هویت که برنامه از آن استفاده می‏کند را تعیین می‏کند. این عنصر یکی از چهار مقدار زیر را می‏تواند داشته باشد:

  •  Windows: قبلا در مورد آن بحث شد.
  • Forms: کاربر از طریق فرم روی یک صفحه وب، شناسایی می‏شود.
  •  Passport: کاربر با استفاده از Microsoft's Passport Network شناسایی می‏شود.  
  •  None: هیچ گونه احراز هویت انجام نمی‏شود و همه کاربران ناشناس هستند.  

به طور پیش فرض، برنامهASP.NET  احراز هویت Windows را استفاده می‏کند. برای تغییر نوع احراز هویت به احراز هویت فرم‏ها، باید مشخه mode عنصر <authentication> را به Forms تغییر دهیم.

اگر فایل Web.config در پروژه شما وجود ندارد، آن را اضافه کنید.

 

سپس عنصر <authentication> را در جای معین قرار دهید و مقدار mode آن را برابر Forms نمایید. 

 

<configuration>

<system.web>

... Unrelated configuration settings and comments removed for brevity ...

<!--

The <authentication> section enables configuration

of the security authentication mode used by

ASP.NET to identify an incoming user.

-->

<authentication mode="Forms" />

</system.web>

</configuration>

نکته: از آنجایی که Web.config یک فایل XML است، کوچک و بزرگی حروف مهم است.

عنصر <authentication> می‏تواند به طور اختیاری یک عنصر فرزند به نام <forms> داشته باشد که شامل تنظیمات احراز هویت فرم‏ها است.