修改密码是本章介绍的最后一个管理功能,使用它管理员可以修改存储在admin.xml文件中的密码,完成这个功能的用户控件是ucAdmin_PWD.ascx。该控件的布局及运行效果如图1-22所示。
图1-22 修改密码
如图1-22左侧所示,用户控件的布局很简单,两个文本框用于输入,两个按钮来执行操作以及两个验证控件检测输入的有效性。
用户名和密码保存在XML文件中,在编写代码时要首先引入System.XML命名空间,再编码。单击“修改”按钮后,将会替换admin.xml文件中的adminname和adminpwd节点,在替换之前会先对管理员在文本框中输入的文本进行MD5加密。如下所示为实现代码:
- protected void btnSubmit_Click(object sender, EventArgs e)
- {
- string newName = FormsAuthentication.HashPasswordForStoringInConfigFile(name.Text.Trim(), "MD5");
- string newPWD = FormsAuthentication.HashPasswordForStoringInConfigFile(pwd.Text.Trim(), "MD5");
- string xmlPath = HttpContext.Current.Server.MapPath("images/admin.xml");
- XmlDocument objXmlDoc = new XmlDocument();
- objXmlDoc.Load(xmlPath);
- objXmlDoc.SelectSingleNode("adminlist/list/adminname").InnerText = newName;
- objXmlDoc.SelectSingleNode("adminlist/list/adminpwd").InnerText = newPWD;
- objXmlDoc.Save(xmlPath);
- objXmlDoc = null;
- Response.Write("<script language='javascript'>alert('修改成功');window.location.href('Admin_Index.aspx')</script>");
- }
这里变量newName和newPWD存储的是经过加密的字符串,XmlDocument对象objXmlDoc执行载入admin.xml文件并替换节点值的操作。最后保存这些修改并弹出提示对话框中返回系统管理首页。
“取消”按钮的单击事件则清空了在两个文本框中输入的内容,如下所示:
- protected void Button1_Click(object sender, EventArgs e)
- {
- name.Text = "";
- pwd.Text = "";
- }