داغترین‌ها: #اربعین

آموزش پیشرفته ASP.Net Web Forms نحوه احراز هویت یا Authentication

1,627
گروه نرم افزاری هیلتن 1.5 هزار دنبال‌ کننده
به نام خدا با آموزش ASP.Net Web Forms در خدمت شما همراهان گرامی هستیم.اینکه با استفاده از سشن ها Session ما یک فرم Login ساختیم صرفا برای آشنایی شما با نحوه کار با Session بود اما در فرم های لاگین واقعی هیچوقت به این نحو عمل نمیشه.در محیط ویژوال استودیو از قبل یک پروژه جدید ایجاد کردیم ، داخل روت سولوشن یک پوشه جدید بنام Pages ایجاد میکنیم.داخل پوشه Pages دوتا وب فرم جدید به نام های LoginPage و MainPage . وارد LoginPage مون میشیم و فرم لاگین مون رو درست میکنیم.برای "نام کاربری" و "رمز عبور" ، دوتا اینپوت تکست (یا همون اینپوت باکس یا به عبارتی همون TextBox) روی فرم میندازیم(هر دو باید runat=server باشند).برای لاگین کردن یک دکمه Button هم از نوع asp روی فرم میندازیم. میخواهیم فرم لاگین مون وسط صفحه بیاد ، برای اینکار باید از کلاس css استفاده کنیم.تو روت سولوشن یک پوشه بنام Content میسازیم و داخل Content هم یک پوشه بنام css میسازیم.و داخل پوشه css هم یک فایل Style Sheet بنام SiteCss اضافه یا Add میکنیم.تو فایل SiteCss یک کلاس بنام DivLogin میسازیم و ویژگی های مورد نظر رو به این کلاس میدیم. در آخر وارد LoginPage مون میشویم و فایل SiteCss رو به LoginPage مون لینک میکنیم و در نهایت کلاس DivLogin رو داخل تگ div بکار میبریم تا div مون به همراه محتوای داخلش اعم از دکمه ها و اینپوت تکست ها و غیره در وسط صفحه جای بگیرند. از قسمت سولوشن وارد فایل Web.config میشیم.وارد تگ system.web میشیم و یک تگ فرزند به نام authentication ایجاد میکنیم.داخل تگ authentication از ویژگی mode=Forms استفاده میکنیم.این بدان معناست که حالتی که ما واسه authentication میخواهیم ایجاد کنیم ، حالت Forms است.داخل تگ authentication یک تگ فرزند به نام forms ایجاد میکنیم.داخل تگ forms از چند ویژگی استفاده میکنیم که در زیر به آنها اشاره میکنیم: ویژگی اول loginUrl میباشد که مقدار آنرا loginUrl=~/Pages/LoginPage.aspx تعیین میکنیم.یعنی آدرس فرم لاگین را به آن میدهیم. ویژگی دوم defaultUrl میباشد که مقدار آنرا defaultUrl=~/Pages/ MainPage.aspx تعیین میکنیم.یعنی آدرس فرم اصلی را به آن میدهیم. ویژگی سوم timeout میباشد که مقدار آنرا timeout=100 تعیین میکنیم.یعنی هر کاربری که لاگین کرد مقدار لاگین آن 100 دقیقه باقی بماند. ویژگی چهارم solidingExpiration میباشد که دو مقدار false و trueرا می پذیرد.اگر مقدار آنرا false در نظر بگیریم آنگاه که زمان timeout به پایان برسد ، کاربر را از لاگین خارج میکند و کاربر مجبور میشود مجددا لاگین کند اما اگر مقدار آنرا true در نظر بگیریم قبل از آنکه زمان timeout به پایان برسد ، کاربر میتواند مجددا request بدهد تا زمان timeout مجددا ریست شود و دیگر نیازی به لاگین مجدد نباشد. ویژگی پنجم requireSSL میباشد که دو مقدار false و trueرا می پذیرد.یعنی سایت شما HTTPS هست یا نه (مثلا درگاه های بانکی HTTPS هستند) اینجا مقدار آنرا false در نظر میگیریم. ویژگی ششم cookielees میباشد ، بدین معنا که سایت شما از کوکی استفاده کند یا نه ؟ که ما مقدار AutoDetect را به آن میدهیم یعنی بطور خودکار خودش تشخیص بده. ویژگی هفتم protection میباشد ، بدین معناست که چه نوع اقداماتی برای محافظت از کوکی ها انجام شود؟ که ما مقدار All را به آن میدهیم یعنی همه اقدامات حفاظتی لازم بمنظور حفاظت از کوکی ها انجام شود. مجددا وارد فرم LoginPage میشیم و روی دکمه Button "Login" دابل کلیک میکنیم تا ایونت کلیکش در سمت سرور باز بشه و داخلش این کدها رو میزنیم: if ( TxtUName.Value.Trim().ToLower() == "Heilton" TxtPass.Value.Trim() == "123" ) System.Web.Security.FormsAuthentication.RedirectFormLoginPage(ID=20 , false); else Response.write ("رمز عبور یا نام کاربری اشتباه است") در کد بالا شرط گذاشتیم که اگر نام عبور وارد شده در TxtUName برابر با " Heilton" بود و رمز عبور وارد شده در TxtPass هم برابر با "123" بود ، کاربر رو به MainPage یا صفحه اصلی منتقل کن و همزمان پارامتر ID=20 را به MainPage بفرست ، false نیز بدین معناست که اگر کاربر مرورگر را ببندد ، از لاگین خارج میشود و مجبور است دفعه بعد مجددا لاگین کند اما اگر true میذاشتیم حتی با باستن مرورگر نیز کاربر به خاطر سپرده میشد و نیاز به لاگین مجدد نداشت. در صفحه MainPage داخل ایونت Page_Load نیز باید چک کنیم که کاربر لاگین کرده یا خیر اگر لاگین کرده بود، پارامتر ID=20 را که از LoginPage گرفته بود عینا چاپ میکند در غیر اینصورت اجازه دسترسی کاربر به صفحه MainPage داده نشود و کاربر به صفحه لاگین منتقل شود. یک دکمه هم برای SignOut() کردن اضافه میکنیم
pixel