فرم لاگین همراه با قفل با استفاده از معماری سه لایه در Asp.net

چهارشنبه 11 تیر 1393

فرم لاگین همراه با قفل با استفاده از معماری سه لایه در Asp.net

فرم لاگین همراه با قفل با استفاده از معماری سه لایه در 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 مرتبه پسورد اشتباه ،پسورد قفل می شود

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید