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

DOTNET

Xây dựng ứng dụng thay đổi mật khẩu

Được viết bởi QuangIT ngày 09/05/2013 lúc 02:49 PM
Bài trước chúng ta đã hoàn thành Trang tạo mới người dùng, bài này chúng ta sẽ tiếp tục xây dựng trang thay đổi mật khẩu người dùng.
  • 0
  • 2592

Xây dựng ứng dụng thay đổi mật khẩu


Bài trước chúng ta đã hoàn thành Trang tạo mới người dùng, bài này chúng ta sẽ tiếp tục xây dựng trang thay đổi mật khẩu người dùng(bạn nên theo dõi các bài trước để biết cách tạo các đối tượng người dùng).

Đầu tiên ta cần có trang Changpass.aspx với các giá trị sau:
Giá trị ẩn lấy tên truy cập
<asp:HiddenField ID="H_TenTruyCap" Value="" runat="server" />
Giá trị ẩn lấy loại người dùng kiểu int
<asp:HiddenField ID="H_LoaiNhanVien" Value="0" runat="server" />
Giá trị ẩn lấy mã truy cập
<asp:HiddenField ID="H_CatalogId" Value="" runat="server" />
Control Textbox hiển thị tên đăng nhập
<asp:TextBox ID="txtTenDangNhap" Width="150px" BackColor="WhiteSmoke"
                    ReadOnly="true" runat="server"></asp:TextBox>
Control Textbox để nhập mật khẩu với Validation là RequiredField để bắt buộc nhập ký tự
<asp:TextBox ID="txtMatKhau" Width="150px" TextMode="Password"
                    MaxLength="100" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ForeColor="Red"
                    SetFocusOnError="True" ControlToValidate="txtMatKhau" Display="Dynamic" ErrorMessage=" (*)"></asp:RequiredFieldValidator>
Control Textbox để nhập lại mật khẩu với Validation là RequiredField để bắt buộc nhập ký tự và Validation Compare để so sánh mật khẩu nhập lại có trùng với mật khẩu mới nhập không
<asp:TextBox ID="txtMatKhauLai" CssClass="hrm_textbox" Width="150px" TextMode="Password"
                    MaxLength="100" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ForeColor="Red"
                    SetFocusOnError="True" ControlToValidate="txtMatKhauLai" Display="Dynamic" ErrorMessage=" (*)"></asp:RequiredFieldValidator>
                <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtMatKhauLai"
                    ControlToCompare="txtMatKhau" ErrorMessage="Mật khẩu gõ lại không khớp" ForeColor="Red"></asp:CompareValidator>
Control Button Image với sự kiện khi click vào sẽ gọi hàm cmdSave_Click()
<asp:ImageButton ID="cmdSave" ImageUrl="~/Images/save.jpg" runat="server" OnClick="cmdSave_Click" />

changepass01.jpg

Trong Changpass.cs

Tại hàm Page_Load, bạn cần kiểm tra Giá trị của khóa sKey trong HttpContext.Current.User.Identity để lấy truy vấn Tên truy cập

protected void Page_Load(object sender, EventArgs e)
    {
        if (Common.GetKeyUserInfo("TenTruyCap") != null)
        {
            H_CatalogId.Value = Common.GetKeyUserInfo("TenTruyCap").ToString();
            Bind_Data(H_CatalogId.Value);
        }
    }

Với hàm Bind_Data, nó sẽ lấy giá trị trong CSDL ra ngoài, đối tượng NguoiDung sẽ lấy giá trị trong bảng Người Dùng với thuộc tính khóa là TenTruyCap

protected void Bind_Data(string TentruyCap)
    {
        using (NguoiDung entNguoiDung = DataRepository.NguoiDungProvider.GetByTenTruyCap(TentruyCap))
        {
            if (entNguoiDung != null)
            {
                txtTenDangNhap.Text = entNguoiDung.TenTruyCap;
                H_CatalogId.Value = entNguoiDung.Id.ToString();
                H_TenTruyCap.Value = entNguoiDung.TenTruyCap;
                H_LoaiNhanVien.Value = entNguoiDung.LoaiNhanVien.ToString();
            }
        }
    }

changepass02.jpg

Bây giờ xử lý sự kiện cmdSave_Click. Đầu tiên nó sẽ khởi tạo đối tượng NguoiDung, gán các thuộc tính hiển thị trong hàm Bind_Data()
Gán tên truy cập vào TenTruyCap, mật khẩu nhập trên textbox vào MatKhau, công thức tính MaTruyCap
Sau đó mã hóa MaTruyCap sang MD5, MatKhau sang MD5
Các thuộc tính khác được gán như bên dưới, rồi kiểm tra, nếu Id =0 thì Insert(tức nhiên với bài toán thay đổi mật khẩu này thì không dùng đến, có cũng được mà không có cũng chẳng sao), còn lại thực hiện cập nhật mật khẩu. 

protected void cmdSave_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            using (NguoiDung entNguoiDung = new NguoiDung())
            {
                string TenTruyCap = H_TenTruyCap.Value;
                string MatKhau = Common.StandardString(txtMatKhau.Text);
                string MaTruyCap = TenTruyCap + MatKhau;
                entNguoiDung.Id = Convert.ToInt32(H_CatalogId.Value);
                entNguoiDung.TenTruyCap = TenTruyCap;
                entNguoiDung.MaTruyCap = Common.EncryptMD5(MaTruyCap);
                entNguoiDung.MatKhau = Common.EncryptMD5(MatKhau);
                entNguoiDung.LoaiNhanVien = Convert.ToInt32(H_LoaiNhanVien.Value);
                bool updateStatus = false;
                try
                {
                    if (entNguoiDung.Id == 0)
                    {
                        updateStatus = DataRepository.NguoiDungProvider.Insert(entNguoiDung);
                    }
                    else
                    {
                        entNguoiDung.EntityState = EntityState.Changed;
                        updateStatus = DataRepository.NguoiDungProvider.Update(entNguoiDung);
                    }
                    if (!updateStatus)
                    {
                        WebMessage.Show("Cập nhật Người dùng không thành công");
                    }
                    else
                    {
                        txtMatKhau.Text = "";
                        WebMessage.Show("Cập nhật Người dùng thành công");
                    }
                }
                catch (Exception)
                {
                    WebMessage.Show("Cập nhật Người dùng không thành công");
                }
            }
        }
        catch (Exception)
        {
            WebMessage.Show("Cập nhật Người dùng không thành công");
        }
    }

Nguồn bài viết: DotNet.vn

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