📄 changepassword.aspx.cs
字号:
using System;
using System.Security.Cryptography;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using DBUtils;
namespace BlueHill.EmployeeInfo
{
/// <summary>
/// ChangePassword 的摘要说明。
/// </summary>
public class ChangePassword : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Panel pnlPageFix;
protected System.Web.UI.WebControls.TextBox txtOldPwd;
protected System.Web.UI.WebControls.TextBox txtNewPwd;
protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
protected System.Web.UI.WebControls.CompareValidator CompareValidator2;
protected System.Web.UI.WebControls.TextBox txtNewPwdAgain;
protected System.Web.UI.WebControls.CompareValidator CompareValidator1;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
protected System.Web.UI.WebControls.Button btnChange;
protected System.Web.UI.WebControls.Label lblInfo;
/// <summary>
/// 网页初始化时执行该方法。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if ( IsPostBack )
{
//如果网页是第一次生成时,执行如下操作:
//校验用户在界面控件中的输入是否合法。
//有关校验用户输入以及输入验证控件的更多信息,可参看课本第七章。
Validate();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnChange.Click += new System.EventHandler(this.btnChange_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <summary>
/// 当用户单击“修改密码”按钮时,该方法将验证用户的旧密码和新密码,并更新数据库。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnChange_Click(object sender, System.EventArgs e)
{
//校验用户输入的数据是否合法。
Validate();
if ( IsValid )
{
//如果用户输入合法,则继续执行以下操作:
int iEmpID;
//检查用户的登录信息是否丢失,丢失则显示出错信息。
if ( Session["EmployeeID"] == null )
{
lblInfo.Text = "登录名丢失。";
return;
}
//从 Session 中获取员工编号信息。
iEmpID =int.Parse ( (string)Session["EmployeeID"]);
//从数据库中获取正确的密码。
Byte[] arHashedSavedPassword=null;
int iRetValue;
iRetValue = DBUtils.EmployeeInfo.GetSavedPassword(iEmpID, ref arHashedSavedPassword);
if ( iRetValue == (int)DBResult.Failed )
{
//数据库操作失败,说明该员工不存在,则显示出错信息。
lblInfo.Text = "无法确定旧密码.";
return;
}
//将用户输入的密码进行 Unicode 编码。
UnicodeEncoding UE = new UnicodeEncoding();
Byte[] arSuppliedPass = UE.GetBytes(txtOldPwd.Text.Trim());
//将上一步得到的 Unicode 编码进行哈希处理。
SHA1Managed SHhash = new SHA1Managed();
Byte[] arHashSuppliedPass = SHhash.ComputeHash(arSuppliedPass);
//判断用户输入的密码和数据库中的密码两者的哈希值是否相等。
bool bHashesEqual = true;
int x;
for ( x = 0; x<=arHashSuppliedPass.Length - 1; x++)
{
if ( arHashSuppliedPass[x] != arHashedSavedPassword[x] )
{
bHashesEqual = false;
break;
}
}
if ( bHashesEqual )
{
//如果两者相等,则说明用户输入的旧密码是正确的,同时用新密码更新数据库。
//将新密码进行哈希处理。
Byte[] arNewPassword = UE.GetBytes(txtNewPwd.Text);
Byte[] arHashNewPassword = SHhash.ComputeHash(arNewPassword);
//将新密码的哈希值保存到数据库中。
iRetValue = DBUtils.EmployeeInfo.ChangePassword(iEmpID, arHashNewPassword);
if ( iRetValue == (int)DBResult.Failed )
{
//如果数据库操作失败,显示提示信息。
lblInfo.Text = "密码修改失败.";
return;
}
lblInfo.Text = "密码修改成功!";
}
else
{
//两者不相等,说明用户输入的旧密码不正确,显示提示信息。
lblInfo.Text = "旧密码不正确!";
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -