آموزش پیشرفته ASP.Net Web Forms ساخت فرم login با Session

1,207 بازدید
بیشتر
گروه نرم افزاری هیلتن
گروه نرم افزاری هیلتن
در این جلسه قصد داریم درباره یکی دیگه از روش های ارسال اطلاعات بین صفحات وب صحبت کنیم.سشن Session داده های یک کاربر را بصورت موق ...
در این جلسه قصد داریم درباره یکی دیگه از روش های ارسال اطلاعات بین صفحات وب صحبت کنیم.سشن Session داده های یک کاربر را بصورت موقت نگهداری می کند و در طول پیمایش صفحات توسط کاربر، این داده به اشتراک گذاشته می شوند. به عبارتی بهتر سشن Session یک متغییر سراسری است که در کل صفحات سایت قابلیت دسترسی دارد و امنیت بسیار بالاتری نسبت به بقیه روشها دارد.معمولا برای لاگین login کردن از سشن Session استفاده میکنند.به این ترتیب نام کاربری و رمز عبور در سشن Session ذخیره میشود و اگر Session خالی باشد دسترسی کاربر به صفحه مورد نظر امکان پذیر نمیباشد .توجه داشته باشید که اگر از Session زیاد استفاده شود باعث میشود سایت کند شود. وقتی که یک کاربر در سایت می خواهد لاگین کند در صورتی که اطلاعات خود را بدرستی وارد کرده باشد ، به صفحه مورد نظر منتقل خواهد شد اما صفحه ای که کاربر هدایت شده می تواند دفعه ی بعد با شناسایی اسم صفحه در آدرس url ، بدون اینکه لاگین کند مستقیماً اسم صفحه را در قسمت url مرورگر وارد کند و به صفحه مورد نظر دسترسی پیدا کند.در چنین حالتی راه حل استفاده از session است. برای شروع در محیط ویژوال استودیو داخل روت سولوشن یک پوشه جدید بنام Pages ایجاد میکنیم. حالا میخوایم داخل پوشه Pages دوتا فرم یا صفحه ایجاد کنیم ، یکی صفحه لاگین و دیگری صفحه اصلی که کاربر بوسیله فرم لاگین ، با وارد کردن نام کاربری و رمز عبور داخل صفحه اصلی لاگین شود ، ما این کار را با سشن session انجام خواهیم داد.داخل پوشه Pages یک Web Form به نام loginPage و یک Web Form دیگه بنام MainPage اضافه میکنیم.وارد loginPage مون میشیم.حالا میخواهیم کاربر ، نام عبور و رمز عبور رو تو دوتا تکست باکس یا اینپوت باکس وارد کنه و بعد با زدن دکمه "ورود" ، درصورت صحیح بودن ، کاربر به فرم اصلی لاگین شود ، بنابراین برای "نام عبور" روی فرم مون یک تگ input که type اون از نوع text هست قرار میدیم و id اونو TxtUserName قرار میدیم و MaxLength = 25 . برای "رمز عبور" هم یک تگ input نوع text = Password ایجاد میکنیم و id = TxtPassword قرار میدیم و MaxLength = 30 . یک تگ Lable هم (از نوع html با آیدی LblMsg ) برای نمایش خطا رمز عبور یا نام کاربری وارد میکنیم.یک Button از نوع asp با id = Btnopen برای لاگین کردن کاربر ، روی فرم قرار میدیم. روی Button "ورود" دابل کلیک میکنیم تا ایونت کلیک ش باز شه. داخل ایونت کلیک Button "ورود" ، کدهای زیر رو میزنیم: if ( TxtUserName.Value.Trim() == "رحیم" TxtPassword.Value.Trim().ToLower() == "123" ) Session.Add ( IdUser , 1 ) Response.Redirect( MainPage.aspx , true ) else LblMsg.InnerHtml = " نام عبور یا نام کاربری شما اشتباه میباشد " در کد بالا شرط گذاشتیم که اگر نام عبور وارد شده در TxtUserName برابر با "رحیم" بود و رمز عبور وارد شده در TxtPassword هم برابر با "123" بود بیا و آیدی 1 رو به سشن Session (نام سشن IdUser) اضافه یا Add کن.اگر شرط صحیح بود کاربر به وب فرم MainPage.aspx منتقل میشود (دستور true باعث میشود خط های بعدی کد اجرا نشوند) در غیر اینصورت درون Label (یعنی LblMsg) متن " نام عبور یا نام کاربری شما اشتباه میباشد " را چاپ کن. حالا در صفحه MainPage باید چک کنیم که این سشن وجود دارد یا خیر و اگر سشن وجود نداشت (خالی بود) اجازه دسترسی کاربر به صفحه MainPage داده نشود و کاربر به صفحه خطا منتقل شود. وارد MainPage میشیم و روی صفحه خالی راست کلیک کنیم و روی گزینه view code کلیک کنیم تا به قسمت کدهای سی شارپ و سمت سرور منتقل شیم.داخل ایونت Page_Load کدهای زیر رو میزنیم : if ( Session [ "IdUser "] != null ) String StrUserId = Session [ "IdUser "].ToString() if ( StrUserId != 1 ) Response.Redirect ( errorpage/allerror.html , true ) else Response.Redirect ( errorpage/allerror.html , true )

همه توضیحات ...