ایجاد 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
- 4k بازدید
- 5 تشکر