ایجاد Login Page ساده در ASP.Net MVC
پنجشنبه 11 آذر 1395در این مقاله ، ما یک Login Form ساده در ASP.Net MVC ایجاد خواهیم کرد . اطلاعات کاربر را اعتبارسنجی خواهیم کرد و اعمالی که کاربر باید انجام دهد را به او اعلام میکنیم . در ادامه ی این مقاله ، ایجاد یک صفحه Login را به صورت مرحله به مرحله بررسی خواهیم کرد .
صفحه Login یکی از اساسی ترین نیاز های هر برنامه ای میباشد . اطلاعات کاربر قبل از انجام هر کاری در سیستم نیاز به اعتبارسنجی دارند .
یک پایگاه داده با نام ConsumerBanking ایجاد کنید. یک جدول با نام CBLoginInfo در آن ایجاد کنید .
create database ConsumerBanking go USE [ConsumerBanking] GO /****** Object: Table [dbo].[CBLoginInfo] Script Date: 8/7/2016 10:06:47 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CBLoginInfo]( [CustomerId] [int] NOT NULL, [UserName] [nvarchar](20) NULL, [Password] [nvarchar](20) NULL, [LastLoginDate] [datetime] NULL, [LoginFailedCount] [int] NULL, [LoginIPAddress] [nvarchar](20) NULL, [CustomerTimeZone] [nvarchar](20) NULL, [LastAccessedDate] [datetime] NULL, [AccountLocked] [bit] NULL, CONSTRAINT [PK_CBLogin1] PRIMARY KEY CLUSTERED ( [CustomerId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
توجه داشته باشید که Password در هیچ برنامه ای بصورت Plain Text ذخیره نخواهد شد . بهتر است که آن را کدگذاری کنید ، در این صورت هیچ کسی نمیتواند آن ها را بخواند ، اما چون هدف این مقاله آموزشی است ، ما در اینجا Password را بصورت Plain Text ذخیره خواهیم کرد .
زمانی که چند رکورد وارد پایگاه داده SQL Server کردیم ، برای واکشی اطلاعات کاربر و اعتبارسنجی انها ، ما یک Store Procedure خواهیم نوشت . نام این Store Procedure را GetCBLoginInfo بگذارید .
در اینجا منطق های برنامه را تعریف میکنیم ، منطق هایی که در هر صفحه Login ای مورد نیاز است :
• اگر Username و Password معتبر است ، login موفق بوده است و کاربر را به صفحه مشخص شده هدایت کن .
• اگر Username و Password در پایگاه داده وجود ندارد ، یک پیام خطا با مضمون " کاربری با این مشخصات وجود ندارد " را به کاربر نشان دهد .
• اگر Username وارد شده معتبر است ، اما Password وارد شده نا معتبر است ، تعداد دفعات تلاش های ناموفق کاربر را نشان بده .
• اگر تلاش ناموفق کاربر بیش از 5 بار بود ، این کاربر را lock کن .
USE [ConsumerBanking ] GO /****** Object: StoredProcedure [dbo].[GetCBLoginInfo] Script Date: 07/09/1395 10:55:58 ق.ظ ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[GetCBLoginInfo] @UserName VARCHAR(20), @Password varchar(20) AS SET NOCOUNT ON Declare @Failedcount AS INT SET @Failedcount = (SELECT LoginFailedCount from CBLoginInfo WHERE UserName = @UserName) IF EXISTS(SELECT * FROM CBLoginInfo WHERE UserName = @UserName) BEGIN IF EXISTS(SELECT * FROM CBLoginInfo WHERE UserName = @UserName AND Password = @Password ) SELECT 'با موفقیت وارد شدید' AS UserExists ELSE Update CBLoginInfo set LoginFailedCount = @Failedcount+1 WHERE UserName = @UserName Update CBLoginInfo set LastLoginDate=GETDATE() WHERE UserName = @UserName BEGIN IF @Failedcount >=5 SELECT 'تعداد تلاش های ناموفق شما بیش از پنج بار شده است . شما مجاز به تلاش دوباره نیستید ' AS UserExists ELSE select CONVERT(varchar(10), (SELECT LoginFailedCount from CBLoginInfo WHERE UserName = @UserName)) AS UserFailedcount END END ELSE BEGIN SELECT 'کاربری با این مشخصات یافت نشد ' AS UserExists END
حال ما Store Procedure را نیز ایجاد کردیم و کار ما در قسمت پایگاه داده به اتمام رسیده است .
حال ، برای ایجاد صفحه Login ما یک برنامه وب ASP.Net MVC ایجاد خواهیم کرد . و ما Store Procedure را فراخوانی خواهیم کرد از Entity Framework برای اعتبارسنجی اطلاعات کاربر ، استفاده خواهیم کرد .
یک پروژه جدید ایجاد کرده و ASP.Net Web Application را انتخاب کنید و Ok را بزنید .
MVC را انتخاب کنید و Ok را بزنید .
هم اکنون پروژه MVC ساخته شده است .
ما از Entity Framework به عنوان لایه بازیابی کننده اطلاعات استفاده خواهیم کرد . یک فایل EDMX برای بازیابی اطلاعات از پایگاه داده به پروژه اضافه خواهیم کرد ، و Store Procedure ای را که پیش تر ایجاد کردیم را فراخوانی میکنیم .
گزینه Generate from database را انتخاب کنید .
در مرحله بعد ، پایگاه داده خود را انتخاب کنید .
در مرحله بعد Store Procedure خود را انتخاب کنید .
روی Finish کلیک کنید . حال ، ADO.Net Entity Data Model برای شما ساخته شده است .
ما یک کلاس Model جدید با نام CBUserModel ایجاد میکنیم ، که دارای دو مشخصه با نام Username و Password میباشد . این کلاس Model برای ارتباط مابین View و Controller مورد استفاده قرار خواهد گرفت . ما یکسری اعتبارسنجی های ابتدایی را نیز انجام میدهیم که این فیلد ها Empty نباشد . از فضانام System.ComponentModel.DataAnnotations نیز برای استفاده از DataAnnotationها استفاده میکنیم .
using System.ComponentModel.DataAnnotations; namespace CBLogin.Models { public class CBUserModel { [Required(ErrorMessage = " وارد کردن نام کاربری اجباریست ")] public string UserName { get; set; } [Required(ErrorMessage = " وارد کردن پسورد اجباریست ")] [DataType(DataType.Password)] public string Password { get; set; } } }
ما یک Controller با نام CBLoginController ایجاد خواهیم کرد ، که دارای Action زیر میباشد :
Index View به ما Index را نمایش خواهد داد :
public ActionResult Index() { return View(); }
زمانی که کاربر بعد از پر کردن فیلد های Username و Password ، این اطلاعات را ارسال کند ، این Index Action با [HttpPost] فراخوانی خواهد شد . در این Username ، Action و Password اعتبارسنجی خواهند شد .
[HttpPost] public ActionResult Index(CBUserModel model) { ConsumerBankingEntities cbe = new ConsumerBankingEntities(); var s = cbe.GetCBLoginInfo(model.UserName, model.Password); var item = s.FirstOrDefault(); if (item == "Success") { return View("UserLandingView"); } else if(item=="User Does not Exists") { ViewBag.NotValidUser = item; } else { ViewBag.Failedcount = item; } return View("Index"); }
همچنین بعد از ارسال نام کاربری و پسورد در صورت موفقیت آمیز بودن ورود کاربر ، Action زیر فراخوانی خواهد شد .
public ActionResult UserLandingView() { return View(); }
زمانی که یک کاربر index action را بارگذاری میکند ، index view نمایش داده خواهد شد و زمانی که کاربر اطلاعات را وارد و آنها را ارسال میکند ، در این زمان Index Action با [HttpPost] فراخوانی می شود .
Entity Framwork نام کاربری و رمز را اعتبار سنجی میکند و با توجه به Store Procedure در صورت لزوم پیام های خطایی را به کاربر نمایش میدهد و یا کاربر را به صفحه مشخص شده هدایت میکند .
ما وضعیت های زیر را خواهیم داشت :
وضعیت 1 : اگر نام کاربری و رمز خالی باشد ، وضعیتی همانند تصویر زیر خواهیم داشت :
وضعیت دوم :
اگر Username و Password ای که کاربر وارد میکند ، در پایگاه داده موجود نباشد .
وضعیت 3 : زمانی که نام کاربری و رمزی که کاربر وارد میکند ، معتبر باشد ، کاربر به صفحه مقصد هدایت خواهد شد :
وضعیت 5 : زمانی که نام کاربری و رمز اشتباه داده شود ، تعداد دفعاتی که اطلاعات اشتباه وارد شده است به کاربر نمایش داده میشود .
وضعیت 4 :
اگر نام کاربری و رمزی که کاربر وارد میکند ، بیش از 5 بار اشتباه وارد شود ، کاربر lock میشود ، همانند تصویر زیر :
آموزش asp.net mvc
- ASP.net MVC
- 3k بازدید
- 5 تشکر