⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.aspx.cs

📁 东软内部材料(三)程序设计导论
💻 CS
字号:
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.Web.Security;
using System.Text;
using System.Security.Cryptography;

namespace BlueHill
{
	/// <summary>
	/// login 的摘要说明。
	/// </summary>
	public class login : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label Label3;
		protected System.Web.UI.WebControls.Label Label1;
		protected System.Web.UI.WebControls.TextBox txtLoginName;
		protected System.Web.UI.WebControls.Label Label2;
		protected System.Web.UI.WebControls.TextBox txtPassword;
		protected System.Web.UI.WebControls.Button cmdLogin;
		protected System.Web.UI.WebControls.Label lblInfo;
	
		//该方法对网页进行初始化
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
			if(!Page.IsPostBack)
			{
        
            //获取用户端的Cookie值,查看是否以前访问过。
            HttpCookie  objGetCookie  = Request.Cookies["BlueHill"];

            String strLoginName ="";

            if(objGetCookie != null ) 
									{

										//如果以前访问过,则获取以前保存的用户名。
										strLoginName = objGetCookie.Values["LoginName"];
										txtLoginName.Text = strLoginName;
									}

			}
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.cmdLogin.Click += new System.EventHandler(this.cmdLogin_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		//当用户点击“登录”按钮时,执行该方法。
		private void cmdLogin_Click(object sender, System.EventArgs e)
		{
			//设立一个用户输入的密码是否正确的标志变量。
			bool bValidPassword   = false;

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


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

			if( iRetValue == (int) DBResult.Success ) 
			{
				//如果数据库操作无误,则验证数据库密码和用户输入的密码。
        
				//对用户输入的密码进行 Unicode 编码。
				//在下面的代码中对用户输入的密码进行了哈希处理,采用的是 SHA-1 算法。
				//课本第二十四章有对散列数据和 SHA1Managed 类的详细介绍。
				UnicodeEncoding UE = new UnicodeEncoding();
				byte[] arSuppliedPass= UE.GetBytes(txtPassword.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
				{
					//否则显示密码错误信息。
					lblInfo.Text = "密码错误,请重试!";
				}
													   
			}
			else
			{
				//如果数据库操作失败,则说明登录名不存在,显示错误信息。

				lblInfo.Text = "用户不存在,请重试!";
			}


			if( bValidPassword)
			{
				//如果用户登录名和密码都正确,则在会话间保存用户登录信息。

				//保存用户登录名。
				Session["LogonName"] = txtLoginName.Text;

				string strLoginName =txtLoginName.Text;
            
				//新建一个客户端的Cookie 值。
				HttpCookie objNewCookie =new HttpCookie("BlueHill");
            
				//设定 Cookie 的有效日期
				objNewCookie.Expires = DateTime.Now.AddDays(30);
            
				//添加 Cookie 子项。
				objNewCookie.Values.Add("LoginName", strLoginName);
            
				//将 Cookie 值写入客户端
				Response.Cookies.Add(objNewCookie);

				//从数据库中获取该登录名所对应的员工编号。
				int iEmpID = 0;
				DBUtils.Login.GetEmployeeID(strLoginName, ref iEmpID);
            
				//在会话间保存该编号信息。
				Session["EmployeeID"] = iEmpID.ToString();

				string sID = iEmpID.ToString() ;
				if (FormsAuthentication.GetRedirectUrl(sID, false).IndexOf("default.aspx") == -1) 
				{
					//如果用户试图访问其他网页,则跳转到该网页。
					FormsAuthentication.RedirectFromLoginPage(sID, false);
				}
				else
				{
					//如果用户访问的是登录网页,则跳转到“显示员工信息”网页。
					FormsAuthentication.SetAuthCookie(sID, false);
					Response.Redirect("EmployeeInfo/ShowEmpInfo.aspx");
				}


			}
		}
	}
}

⌨️ 快捷键说明

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