فرم لاگین همراه با قفل با استفاده از معماری سه لایه در Asp.net
چهارشنبه 11 تیر 1393فرم لاگین همراه با قفل با استفاده از معماری سه لایه در Asp.net
در این مقاله توضیح خواهیم داد که چگونه یک لاگین فرم با استفاده از Asp.net در یک معماری سه لایه اجرا خواهد شد.
من آنرا با جزئیات توضیح خواهم داد.شما همچنین در این مقاله ،اطلاعات و مفاهیم جدیدی در مورد StoreProcedure ها در SqlServer یاد خواهید گرفت.
ویژگیهای در نظر گرفته شده در این فرم لاگین
- معماری سه لایه توسعه یافته
- تعیین کد کاربری و پسورد
- نگهداری تعدادی لاگین نادرست
- قفل کردن پسورد بعد از 4 بار ناموفق
طراحی Databser
StoreProcedure
Create PROCEDURE [dbo].[usp_LoginVerification] @UserId nvarchar(50), @Password nvarchar(20), @ERROR VARCHAR(100) OUT AS Begin If exists (select 1 from MemberRegistration where UserId=@UserId and Password=@Password and IsLocked='0') Begin --declare update MemberRegistration set WrongLoginAttempt=0,IsLocked='0' Where UserId=@UserId set @ERROR=1 select UserId,FirstName,MiddleName,LastName from MemberRegistration Where UserId=@UserId End Else Begin declare @LoginAttempt int; SET @LoginAttempt= (select WrongLoginAttempt from MemberRegistration where UserId=@UserId ) update MemberRegistration set WrongLoginAttempt=@LoginAttempt+1 Where UserId=@UserId Set @ERROR='Your have entered wrong password' if @LoginAttempt>=4 Begin update MemberRegistration set IsLocked='1' Where UserId=@UserId set @ERROR='Your Password is locked' End End Select @ERROR End
در زیر روند مرحله به مرحله ساخت Login Form در معماری سه لایه توضیح داده شده است:
مرحله اول
طراحی solution لایه بندی شده به صورت زیر:
مرحله 2
BELogin.cs را باز کنید و کد آن را به صورت زیر تغییر دهید.
namespace ABMS.BE { public class BELogin { private string userId; private string password; private string firstName; public string FirstName { get { return firstName; } set { firstName = value; } } private string middleName; public string MiddleName { get { return middleName; } set { middleName = value; } } private string lastName; public string LastName { get { return lastName; } set { lastName = value; } } public string Password { get { return password; } set { password = value; } } public string UserId { get { return userId; } set { userId = value; } } } }
مرحله 3
لایه BLLogin.cs را بصورت زیر تغییر دهید
using System.Data; namespace ABMS.BL { public class BLLogin { ABMS.DL.DLLogin objdal = new ABMS.DL.DLLogin(); BE.BELogin objbeLogin = new BE.BELogin(); public DataSet UserLogin(BE.BELogin objbeLogin) { try { return objdal.LoginCredential(objbeLogin); } catch { throw; } } } }
مرحله 4
DLLogin.cs را بصورت زیر تغییر دهید
using System.Data.SqlClient; using System.Data; namespace ABMS.DL { public class DLLogin { SqlDBHelper sql = new SqlDBHelper(); public DataSet LoginCredential(BE.BELogin belogin) { string connectionString = sql.ConnectionString(); SqlConnection con = new SqlConnection(); con.ConnectionString = connectionString; con.Open(); SqlCommand cmd = new SqlCommand("usp_LoginVerification", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@UserId", belogin.UserId); cmd.Parameters.AddWithValue("@Password", belogin.Password); cmd.Parameters.Add("@ERROR", SqlDbType.Char, 500); cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output; SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); da = new SqlDataAdapter(cmd); da.Fill(ds); con.Close(); return ds; } } }
مرحله 5
UI را بصورت زیر درست می کنیم
مرحله 6
Login.aspx.cs را بصورت زیر تغییر می دهیم.
using System; using System.Data; namespace ABMS.UI.Account { public partial class Login : System.Web.UI.Page { ABMS.BL.BLLogin objBL = new ABMS.BL.BLLogin(); protected void Page_Load(object sender, EventArgs e) { } protected void btnLogin_Click(object sender, EventArgs e) { ABMS.BE.BELogin obJBE = new BE.BELogin(); obJBE.UserId = UserName.Text.Trim(); obJBE.Password = Password.Text.Trim(); DataSet ds = new DataSet(); ds = objBL.UserLogin(obJBE); if (ds.Tables.Count == 1) { lblErrorMsg.Text = ds.Tables[0].Rows[0][0].ToString(); } else if (ds.Tables[1].Rows[0][0].ToString() == "1") { lblErrorMsg.Text = string.Empty; Session["UserId"] = ds.Tables[0].Rows[0][0].ToString(); String name=null; if (!string.IsNullOrEmpty( ds.Tables[0].Rows[0][1].ToString())) { name = name + ds.Tables[0].Rows[0][1].ToString(); } if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0][2].ToString())) { name = name +" "+ ds.Tables[0].Rows[0][2].ToString(); } if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0][3].ToString())) { name = name + " "+ds.Tables[0].Rows[0][3].ToString(); } Session["Name"] = name; Response.Redirect("~/Default.aspx"); } } } }
مرحله 7
برنامه را اجرا میکنیم و پسورد اشتباه را چندین مرتبه وارد می کنیم.
پیغام زیر را مشاهده می کنید.
مرحله 8
بعد از وارد کردن 4 مرتبه پسورد اشتباه ،پسورد قفل می شود
- ASP.net
- 7k بازدید
- 23 تشکر