登录使用cookies记住密码

来源:互联网 发布:python数组值储存空间 编辑:程序博客网 时间:2024/06/07 17:59
        UsersBLL bll = new UsersBLL();        private void AutoLogin()        {            if (Request.Cookies["loginId"] != null && Request.Cookies["pwd"] != null && Request.Cookies["id"] != null)            {                int cookId = Convert.ToInt32(Request.Cookies["id"].Value);                string cookLoginId = Request.Cookies["loginId"].Value;                string cookPwd = Request.Cookies["pwd"].Value;                UserInfo model = bll.GetUserById(cookId);                if (model != null)                {                    string sysPwd = WebComm.MD5Str(model.LoginPwd, cookPwd.Substring(0, 2));                    if (model.LoginId == cookLoginId && sysPwd == cookPwd)                    {                        GoPage(model);                    }                }            }        }        protected void btLogin_Click(object sender, EventArgs e)        {            UserInfo model = bll.GetUser(txtUserLogin.Text.Trim(), WebComm.MD5Str(txtPwd.Text.Trim()));            if (model == null)            {                JScript.Alert(this, "用户名或者密码错误!");                return;            }            //用户勾选记住密码后执行            if (checkPwd.Checked)            {                string dbcookPwd = WebComm.MD5Str(model.LoginPwd, null);                HttpCookie cookId = new HttpCookie("id", model.Id.ToString());                HttpCookie cookLoginId = new HttpCookie("loginId", model.LoginId);                HttpCookie cookPwd = new HttpCookie("pwd", dbcookPwd);                cookId.Expires = DateTime.Now.AddMonths(1);                cookLoginId.Expires = DateTime.Now.AddMonths(1);                cookPwd.Expires = DateTime.Now.AddMonths(1);                Response.Cookies.Add(cookLoginId);                Response.Cookies.Add(cookPwd);                Response.Cookies.Add(cookId);            }            GoPage(model);        }                private void GoPage(UserInfo model)        {            Session["id"] = model.Id;            Session["loginId"] = model.LoginId;            Session["name"] = model.Name;            string url = "~/Default.aspx";            if (Request.QueryString["return"] != null)            {                url = Request.QueryString["return"];            }            Response.Redirect(url);        }

应用到的方法

        #region MD5 加密字符串 +string MD5Str(string str)        /// <summary>        /// MD5 加密字符串        /// </summary>        /// <param name="rawPass">源字符串</param>        /// <returns>加密后字符串</returns>        public static string MD5Str(string str)        {            // 创建MD5类的默认实例:MD5CryptoServiceProvider            MD5 md5 = MD5.Create();            byte[] bs = Encoding.UTF8.GetBytes(str);            byte[] hs = md5.ComputeHash(bs);            StringBuilder sb = new StringBuilder();            foreach (byte b in hs)            {                // 以十六进制格式格式化                sb.Append(b.ToString("x2"));            }            return sb.ToString();        }        #endregion        #region 返回 对字符串MD5之后 加上随机生成的盐值之后 再MD5 的字符串 +string MD5Str(string str, string salt)        /// <summary>        /// 返回 对字符串MD5之后 加上随机生成的盐值之后 再MD5 的字符串        /// </summary>        /// <param name="str"></param>        /// <param name="salt">如果为null,则为字符串进行两次MD5加密算法</param>        /// <returns></returns>        public static string MD5Str(string str, string salt)        {            if (salt == null)            {                Random r = new Random();                salt = ((char)r.Next(65, 91)).ToString() + ((char)r.Next(65, 91)).ToString();            }            return salt + MD5Str(salt + MD5Str(str));        }        #endregion