changepassword.aspx.cs

来自「该管理系统的主要功能是管理员工资料、管理员工考勤、计算员工薪资和业绩评定等。大部」· CS 代码 · 共 166 行

CS
166
字号
using System;
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;
using System.Text;
using System.Security.Cryptography;

namespace BlueHill.EmployeeInfo
{
	/// <summary>
	/// ChangePassword 的摘要说明。
	/// </summary>
	public class ChangePassword : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.TextBox txtOldPwd;
		protected System.Web.UI.WebControls.TextBox txtNewPwd;
		protected System.Web.UI.WebControls.TextBox txtNewPwdAgain;
		protected System.Web.UI.WebControls.Button btnChange;
		protected System.Web.UI.WebControls.CompareValidator CompareValidator1;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator3;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
		}

		#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

		private void btnChange_Click(object sender, System.EventArgs e)
		{

			//获取当前登录系统的员工编号
			int EmpID = Convert.ToInt32(Session["EmployeeID"]);			


			//设立一个用户输入的密码是否正确的标志变量。
			bool bValidPassword   = false;

			//保存哈希后的数据库密码
			byte[] arHashedSavedPass =new byte[20]; 			
        
			//保存反映数据库操作正确与否的返回值
			int iRetValue;


			//从数据库中获取用户正确的密码。
			iRetValue = DBUtils.EmployeeInfo.GetSavedPassword(EmpID,ref arHashedSavedPass);

			if( iRetValue == (int) DBResult.Success ) 
			{
				//如果数据库操作无误,则验证数据库密码和用户输入的密码。
        
				//对用户输入的密码进行 Unicode 编码。
				//在下面的代码中对用户输入的密码进行了哈希处理,采用的是 SHA-1 算法。				
				UnicodeEncoding UE = new UnicodeEncoding();
				byte[] arSuppliedPass= UE.GetBytes(this.txtOldPwd.Text);

				//对上一步得到的 Unicode 编码值进行哈希处理。
				SHA1Managed SHhash=new SHA1Managed();
				byte[] arHashSuppliedPass = SHhash.ComputeHash(arSuppliedPass);

				//比较数据库密码和用户输入的密码两者的哈希值是否相等。
				bool  bHashesEqual =true;
            
				int x;	//x 为循环变量
				for( x = 0; x<= arHashSuppliedPass.Length - 1;x++)
					if( arHashSuppliedPass[x] != arHashedSavedPass[x])
					{
						bHashesEqual =false;
						break;
					}
            

				if (bHashesEqual)
				{
					//如果相等,则标志变量为真。
					bValidPassword = true;					
				}
				else
				{
					Response.Write("<script>alert('旧密码不正确,请重试!')</script>");
				}
											   
			}
			else
			{
				//如果数据库操作失败,则说明密码不正确,显示错误信息。
				Response.Write("<script>alert('旧密码不正确,请重试!')</script>");
			}


			if( bValidPassword)
			{
				//如果密码正确,则可以调用执行修改密码的方法
				
				//设置修改密码是否成功的标志.初使值为 0,成功则为 1
				iRetValue = 0;

				//验证新密码与确认密码是否相同,相同才可以修改密码.
				if(this.txtNewPwd.Text == this.txtNewPwdAgain.Text)
				{
					//对用户输入的密码进行 Unicode 编码。
					//在下面的代码中对用户输入的密码进行了哈希处理,采用的是 SHA-1 算法。				
					UnicodeEncoding UE = new UnicodeEncoding();
					byte[] byteNewPwdUE= UE.GetBytes(this.txtNewPwd.Text);

					//对上一步得到的 Unicode 编码值进行哈希处理。
					SHA1Managed SHhash=new SHA1Managed();
					byte[] byteNewPwd = SHhash.ComputeHash(byteNewPwdUE);

					//执行密码修改操作,返回成功与否
					iRetValue = DBUtils.EmployeeInfo.ChangePassword(EmpID,byteNewPwd);

					
					if(iRetValue == (int)DBResult.Success )
					{
						//密码修改成功
						Response.Write("<script>alert('已成功修改密码!')</script>");
					}
					else
					{
						//密码修改失败
						Response.Write("<script>alert('密码修改失败,请重试!')</script>");
					}
				}
				else
				{
					//新密码与确认密码不一致
					Response.Write("<script>alert('新密码与确认密码不一致,请重试!')</script>");
				}

			}
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?