
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>