Cấp bậc tác giả:

DOTNET

Xây dựng ứng dụng đăng nhập

Được viết bởi QuangIT ngày 20/09/2012 lúc 03:12 PM
Bài viết này dựa trên auto gene code bởi codesmith. Cần phải gene code trước khi thực hiện bài viết này.
  • 0
  • 10811

Xây dựng ứng dụng đăng nhập

Bài viết này dựa trên auto gene code bởi codesmith. Cần phải gene code trước khi thực hiện bài viết này. Table thực hiện:

Id: PK

TenTruyCap: FK


Để thực hiện ứng dụng đăng nhập, đầu tiên cần quan tâm các hàm sau:

- cmdDangNhap_Click

- DoLogin


Tên bài viết: Xây dựng ứng dụng đăng nhập

Tác giả: Quang IT

Cấp độ bài viết: Chưa đánh giá

Tóm tắt: 

- Sử dụng gene CodeSmith

Mã hóa MD5

- Thay thế chuỗi

Forms authentication


Trang Login.aspx

Sử dụng các control sau: Label, TextBox, ImageButton(hoặc button) và RequiredFieldValidator(ràng buộc ô khai báo)

<table cellspacing="0" cellpadding="0" width="100%" border="0">

<tr>

                    <td style="width: 39px"></td>

                    <td class="hrm_title_grey" style="width: 83px">Tên truy cập</td>

                    <td width="7" class="hrm_title_grey">:</td>

                    <td>

                        <asp:TextBox ID="UserName" CssClass="hrm_textbox" runat="server" Width="180px"></asp:TextBox>

                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" SetFocusOnError="true" CssClass="hrm_title_red" runat="server"  ErrorMessage="+ Chưa nhập Tên truy cập!" ControlToValidate="UserName">*</asp:RequiredFieldValidator>

                    </td>

                </tr>

<tr>

                    <td style="width: 39px"></td>                          

                    <td class="hrm_title_grey" style="width: 83px">Mật khẩu</td>

                    <td width="7" class="hrm_title_grey">:</td>

                    <td>

                        <asp:TextBox ID="Password" CssClass="hrm_textbox" runat="server" TextMode="Password" Width="180px"></asp:TextBox>

                        <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" CssClass="hrm_title_red" ErrorMessage="+ Chưa nhập Mật khẩu!">*</asp:RequiredFieldValidator>

                    </td>

                </tr>

<tr>

                    <td style="width: 39px"></td>                                                      

                    <td align="right" style="width: 83px"></td>                              

                    <td colspan="2" style="padding-left:40px">

                        <asp:ImageButton ID="cmdDangNhap" ImageUrl="~/Images/login.jpg" runat="server" onclick="cmdDangNhap_Click" />

                        <asp:ImageButton ID="cmdHuyBo" CausesValidation="false" ImageUrl="~/Images/huy.jpg" OnClientClick="window.close();" runat="server" />

                    </td>

                </tr>

</table>


Tại trang Login.cs

Viết các câu lệnh thực hiện xử lý.

protected void Page_Load(object sender, EventArgs e)

    {

//Xóa phiên làm việc

        Session.Clear();

        FormsAuthentication.SignOut();

    }


/// <summary>

    /// Xử lý button đăng nhập

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    protected void cmdDangNhap_Click(object sender, ImageClickEventArgs e)

    {

//Common.StandardString: Xử lý chuỗi nhập vào, replace các ký tự đặc biệt

        string strUserName = Common.StandardString(UserName.Text);

        string strPassWord = Common.StandardString(Password.Text);

        string strUserCode = strUserName + strPassWord;

//Dùng MD5 để mã hóa

        strPassWord = Common.EncryptMD5(strPassWord);

        strUserCode = Common.EncryptMD5(strUserCode);

//Gọi hàm DoLogin

        DoLogin(strUserName, strPassWord, strUserCode);

    }


public void DoLogin(string strUserName, string strPassword, string strUserCode)

    {

//NguoiDung: Layer Entities - sử dụng để lấy tên truy cập và so sánh sự tồn tại của nó

//Table Người Dùng được gene code bởi CodeSmith

        NguoiDung entNguoiDung = DataRepository.NguoiDungProvider.GetByTenTruyCap(strUserName);

        if (entNguoiDung == null)

        {

            WebMessage.Show("Người dùng không tồn tại trong hệ thống, Xin vui lòng thử lại");

            UserName.Focus();

            return;

        }


        string CurrentPassword = entNguoiDung.MatKhau;

        string CurrentUserCode = entNguoiDung.MaTruyCap;

        string strPassWord = Common.StandardString(Password.Text);

        if (strPassword.Equals(CurrentPassword) && strUserCode.Equals(CurrentUserCode))

        {

            string strUserInfor = string.Format("{0};{1};{2}", entNguoiDung.Id, entNguoiDung.TenTruyCap, entNguoiDung.HoTen);

            Session["UserName"] = entNguoiDung.TenTruyCap;

            FormsAuthentication.SetAuthCookie(strUserInfor, false);

            Response.Redirect("~/AdminCP/HomeAdmin.aspx");

        }

        else

        {

            WebMessage.Show("Mật khẩu không đúng, Xin vui lòng thử lại");

            Password.Focus();

            return;

        }

    }



using App_code:

Common.cs

/// <summary>

    /// Chuẩn hóa chuỗi dữ liệu khi người dùng input

    /// Input: sContent (chuỗi cần chuẩn hóa)

    /// Output: Chuỗi sau khi replace các ký tự đặc biệt

    /// </summary>

    public static string StandardString(string sContent)

    {

        sContent = sContent.Trim();


        sContent = sContent.Replace("<td>", "");

        sContent = sContent.Replace("</td>", "");

        sContent = sContent.Replace("<tr>", "");

        sContent = sContent.Replace("</tr>", "");

        sContent = sContent.Replace("<table>", "");

        sContent = sContent.Replace("</table>", "");

        sContent = sContent.Replace("<script", "");

        sContent = sContent.Replace("</script>", "");


        sContent = sContent.Replace("OR", "");

        sContent = sContent.Replace("ALTER", "");

        sContent = sContent.Replace("DROP", "");

        return sContent;

    }


/// <summary>

    /// Mã hóa chuỗi thành chuỗi MD5

    /// Input: sToEncrypt (Chuỗi cần mã hóa)

    /// Output: Chuỗi sau khi mã hóa

    /// </summary>

    public static string EncryptMD5(string sToEncrypt)

    {

        System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();

        byte[] bytes = ue.GetBytes(sToEncrypt);


        // encrypt bytes

        System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

        byte[] hashBytes = md5.ComputeHash(bytes);


        // Convert the encrypted bytes back to a string (base 16)

        string hashString = "";


        for (int i = 0; i < hashBytes.Length; i++)

        {

            hashString += Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');

        }


        return hashString.PadLeft(32, '0');

    }


Ngoài ra, còn phải config web.config để cấu hình timeout

<authentication mode="Forms">

        <forms loginUrl="~/AdminCP/Default.aspx" name=".ASPXAUTH" timeout="320"></forms>

      </authentication>


Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML