/// <summary> /// 激活用户,激活成功返回true,激活失败返回false /// </summary> /// <param name="user">要激活的,包含完整信息的User类</param> /// <param name="verifyCode">页面接受的验证码</param> /// <returns>激活成功返回ture,激活失败返回false</returns> public Boolean CheckUser(User user, Guid verifyCode) { Boolean result = true; if (!isLegalNewUser(user)) { result = false; } //这里的数据检查比较麻烦。 if (user.User_verify_code == null || verifyCode == null || user.User_isChecked == true) { result = false; } else { if (user.User_verify_code == verifyCode) { user.User_isChecked = true; IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); result = userDAL.UpdateUserInfo(user); } else { result = false; } } return result; }
/// <summary> /// BLL层创建用户账号,由UI层调用,负责数据完整性检查和调用DAL层同名函数 /// </summary> /// <param name="user">要创建的账号类</param> /// <returns>int,大于0说明成功,小于等于0说明调用失败。</returns> public int CreateUser(User user) { int res = 0; /* 数据完整性检查 */ if (isLegalNewUser(user)) { /* 添加用户,数据库中有userAccount唯一约束,因此这里加上异常处理 */ try { IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); res = userDAL.CreateUser(user); SendVerifyMailToNewUser(user); } catch (Exception) { res = 0; } } else { res = 0; } return res; }
/// <summary> /// 注册新用户,无数据验证,数据验证应该在BLL层完成 /// </summary> /// <param name="user">需要新创建的UI.User类</param> /// <returns>影响的行数,大于0说明成功</returns> public int CreateUser(User user) { int res; avfunEntities DataEntity = DataEntityManager.GetDataEntity(); USER NewUSER = this.ConvertUserToUSER(user); DataEntity.USER.AddObject(NewUSER); res = DataEntity.SaveChanges(); return res; }
protected void Page_Load(object sender, EventArgs e) { IUserBLL userBLL = BLLFactory.CreateInstance<IUserBLL>("UserBLL"); //每1分钟才能发一次找回密码请求 Session.Timeout = 1; if (!Page.IsPostBack) { //第一次访问页面 ForgetPasswordForm.Visible = true; //找回密码窗体可见 ForgetPswInfo.Text = "请输入注册邮箱:"; //重设提示信息 ForgetPswInfo.Visible = true; //提示信息可见 } else { //用户提交 User forgetUser = new User(); String userAccount = Request.Form["UserAccount"].Trim(); forgetUser.User_account = userAccount; //防止email轰炸 if (Session[forgetUser.User_account] == null) { if (userBLL.GetForgetPassword(forgetUser)) { //成功取回密码 ForgetPswInfo.Text = "取回密码成功!请进入您的注册邮箱查收密码,3秒后跳转到主页"; //重定向 HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签 RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转 RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("Domain"); //时间为三秒,跳转到首页 this.Page.Header.Controls.Add(RedirectMeta); //分配Session避免邮箱轰炸 Session.Add(forgetUser.User_account, DateTime.Now.ToString()); //UI操作 ForgetPasswordForm.Visible = false; //取回密码窗体不可见 ForgetPswInfo.Visible = true; } else { ForgetPswInfo.Text = "取回密码失败,请检查输入的账户是否正确"; ForgetPasswordForm.Visible = true; ForgetPswInfo.Visible = true; } } else { //给出误导信息,实际上一分钟就行,防止黑客利用 ForgetPswInfo.Text = "您的操作过于频繁,请3分钟后再试"; ForgetPasswordForm.Visible = true; ForgetPswInfo.Visible = true; } } }
protected void Page_Load(object sender, EventArgs e) { IAdminBLL adminBLL = BLLFactory.CreateInstance<IAdminBLL>("AdminBLL"); IUserBLL userBLL = BLLFactory.CreateInstance<IUserBLL>("UserBLL"); Admin loggedAdmin = adminBLL.isLogged(Request); if (loggedAdmin == null) { lblLoginStatus.Text = "您未登录或已登录过期,请重新登录。3秒后转向登录页面"; lblLoginStatus.Visible = true; //重定向 HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签 RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转 RedirectMeta.Content = "3;url=admin_login.aspx"; //时间为三秒,跳转到首页 this.Page.Header.Controls.Add(RedirectMeta); } else { try { User toDelUser = new User(); //这里有可能出错要用try...catch Guid userID = new Guid(Request.QueryString["user_id"]); toDelUser.User_id = userID; User entireUser = userBLL.GetUserByID(toDelUser); if (entireUser != null) { //找到了 //删除 entireUser.User_isDeleted = true; if (userBLL.UpdateUserInfo(entireUser)) { lblLoginStatus.Text = "删除用户成功"; lblLoginStatus.Visible = true; } else { lblLoginStatus.Text = "删除用户失败"; lblLoginStatus.Visible = true; } } else { lblLoginStatus.Text = "没有这个用户"; lblLoginStatus.Visible = true; } } catch { lblLoginStatus.Text = "用户ID格式不正确"; lblLoginStatus.Visible = true; } } }
/// <summary> /// BAL修改用户密码,包括数据检验,成功返回true否则返回false /// </summary> /// <param name="user">要修改的用户</param> /// <param name="newPassword">新密码,应为32位MD5大写字符串</param> /// <returns>成功返回true否则false</returns> public Boolean ChagneUserPassword(User user, String newPassword) { Boolean result = true; if (newPassword.Length != 32) //新密码长度检验 result = false; if (!isLegalNewUser(user)) result = false; IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); result = userDAL.ChangeUserPassword(user, newPassword); return result; }
/// <summary> /// 根据用户和课程创建订单,注意,所有要这么干的地方,必须调用该函数而不是new一个出来! /// </summary> /// <param name="course">用户购买的课程</param> /// <param name="user">登录的用户</param> /// <returns>一个Order类的Instance</returns> public Order CreateOrderByUserAndCourse(Course course, User user) { Order result = null; IUserBLL userBLL = BLLFactory.CreateInstance<IUserBLL>("UserBLL"); ICourseBLL courseBLL = BLLFactory.CreateInstance<ICourseBLL>("CourseBLL"); if (userBLL.isLegalNewUser(user) && courseBLL.isLegalCourse(course)) { result = new Order(); result.Order_course = course.Course_id; result.Order_user = user.User_id; } else { result = null; } return result; }
/// <summary> /// 为了拷贝其他实例的构造函数 /// </summary> /// <param name="user">要拷贝的实例</param> public User(User user) { this.u_id = user.U_id; this.user_id = user.User_id; this.user_account = user.User_account; this.user_password = user.User_password; this.user_nickname = user.User_nickname; this.user_sex = user.User_sex; this.user_head = user.User_head; this.user_isDeleted = user.User_isDeleted; this.user_isChecked = user.User_isChecked; this.user_last_login_date = user.User_last_login_date; this.user_last_login_ip = user.User_last_login_ip; this.user_money = user.User_money; this.user_introduction = user.User_introduction; this.user_verify_code = user.User_verify_code; this.user_timestamp = user.User_timestamp; //TimeStamp没改。 }
/// <summary> /// DAL层重设密码函数,成功返回true,否则返回false /// </summary> /// <param name="user">要改变密码的user,account必填,password必填,为重新生成的密码</param> /// <returns>成功返回true,否则false</returns> public Boolean GetForgetPassword(User user) { Boolean result = false; avfunEntities DataEntity = DataEntityManager.GetDataEntity(); try { USER DestUser = (from usr in DataEntity.USER where usr.user_account == user.User_account //找目标user,LINQ里面字符串相等就是 ==! select usr).Single(); DestUser.user_password = user.User_password; //更改密码为新生成的8位随机字符串 DataEntity.SaveChanges(); result = true; } catch (Exception) { result = false; } return result; }
/// <summary> /// 修改用户密码,User为登录的用户,newPassword为新密码,成功返回true否则返回false /// </summary> /// <param name="user">登录的用户</param> /// <param name="newPassword">新密码(MD5大写字符串)</param> /// <returns>成功true失败false</returns> public Boolean ChangeUserPassword(User user, String newPassword) { Boolean result = true; avfunEntities DataEntity = DataEntityManager.GetDataEntity(); try { USER OldUSER = (from usr in DataEntity.USER where usr.user_account == user.User_account //账号 && usr.user_password == user.User_password //密码 && usr.user_timestamp == user.User_timestamp //时间戳,注意,这个很重要!确保一致性! select usr ).Single(); OldUSER.user_password = newPassword; DataEntity.SaveChanges(); result = true; } catch (Exception) { result = false; } return result; }
/// <summary> /// 取回密码函数,成功返回true,否则返回false /// </summary> /// <param name="user">重设密码的User类,Account必填</param> /// <returns>成功返回true,否则返回false</returns> public Boolean GetForgetPassword(User user) { Boolean result = false; IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); if (user.User_account == null || //不为null user.User_account.Equals("") || //不为空 user.User_account.Length > 64) {//不长于64 // 数据验证完毕 result = false; } else { //调用DAL重设密码 String newUserPassword = GenerateRandomString(8);// 生成8位新密码,包括大小写特殊字符等等等等 user.User_password = MD5(newUserPassword); //加密后传入数据库 if (userDAL.GetForgetPassword(user)) //数据库那边搞定了!~ { result = true; //给用户发邮件 SendNewPasswordMailToUser(user, newUserPassword); } else { result = false; } } return result; }
/// <summary> /// 将BLL层传递过来的UI.User对象转换为Enitity映射中的USER对象,所有属性拷贝 /// </summary> /// <param name="user">UI.User对象,由BLL层传递</param> /// <returns>转换完毕的USER对象</returns> private USER ConvertUserToUSER(User user) { USER ResultUSER = new USER(); ResultUSER.u_id = user.U_id; ResultUSER.user_id = user.User_id; ResultUSER.user_head = user.User_head; ResultUSER.user_account = user.User_account; ResultUSER.user_introduction = user.User_introduction; ResultUSER.user_isChecked = user.User_isChecked; ResultUSER.user_isDeleted = user.User_isDeleted; ResultUSER.user_last_login_ip = user.User_last_login_ip; ResultUSER.user_last_login_time = user.User_last_login_date; ResultUSER.user_money = user.User_money; ResultUSER.user_nickname = user.User_nickname; ResultUSER.user_password = user.User_password; ResultUSER.user_sex = user.User_sex; ResultUSER.user_timestamp = user.User_timestamp; ResultUSER.user_verify_code = user.User_verify_code; return ResultUSER; }
/// <summary> /// 将DAL的USER类转换成BLL的User类 /// </summary> /// <param name="user">要转换的USER类</param> /// <returns>转换后对应的user类</returns> private User ConvertUSERToUser(USER user) { User ResultUSER = new User(); //这行代码不要的原因是因为U_id无意义啊! ResultUSER.U_id = user.u_id; ResultUSER.User_id = user.user_id; ResultUSER.User_head = user.user_head; ResultUSER.User_account = user.user_account; ResultUSER.User_introduction = user.user_introduction; ResultUSER.User_isChecked = user.user_isChecked; ResultUSER.User_isDeleted = user.user_isDeleted; ResultUSER.User_last_login_ip = user.user_last_login_ip; ResultUSER.User_last_login_date = user.user_last_login_time; ResultUSER.User_money = user.user_money; ResultUSER.User_nickname = user.user_nickname; ResultUSER.User_password = user.user_password; ResultUSER.User_sex = user.user_sex; ResultUSER.User_timestamp = user.user_timestamp; ResultUSER.User_verify_code = user.user_verify_code; return ResultUSER; }
/// <summary> /// 判断用户是否已经登录,如果登录那么返回包含用户信息的User对象,否则返回Null,相当于认证 /// </summary> /// <param name="httpRequest">当前的httpRequest</param> /// <returns>已登录返回User对象,否则返回Null</returns> public User isLogged(HttpRequest httpRequest) { /* 输入验证不可少 */ /* 账号密码输入验证 */ if (httpRequest.Cookies["userAccount"] == null || httpRequest.Cookies["userPassword"] == null || httpRequest.Cookies["userAccount"].Value.Length > 64 || httpRequest.Cookies["userPassword"].Value.Length != 32 ) return null; else { User logUser = new User(); logUser.User_account = httpRequest.Cookies["userAccount"].Value; logUser.User_password = httpRequest.Cookies["userPassword"].Value; //这个调用必须指定ip logUser.User_last_login_ip = HttpContext.Current.Request.UserHostAddress; logUser.User_last_login_date = DateTime.Now; User detailUser = isLegalLogin(logUser); return detailUser; } }
/// <summary> /// 根据账号和密码获得用户信息,返回一个符合查询条件的User,若不存在,返回null /// 其中参数的Account和Password必填 /// </summary> /// <param name="user">要获得的User类,其中Account和Password必须填</param> /// <returns>User类或null</returns> public User GetUserByAccountAndPassword(User user) { User ResultUser = null; /* * 数据完整性检查 * */ IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); ResultUser = userDAL.GetUserByAccountAndPassword(user); return ResultUser; }
/// <summary> /// 检查参数中的User类实例是否可以作为合法的登录用户信息 /// </summary> /// <param name="user">要检查的User类</param> /// <returns>合法返回true,否则false</returns> private Boolean isLegalLoginInfo(User user) { Boolean result = true; if (user.User_account == null || user.User_account.Equals("") || user.User_account.Length > 64) result = false; if (user.User_password == null || user.User_password.Length != 32 || //其实这不太可能,只判断是否等于32就好了,因为到BLL的全MD5过 user.User_password.Equals("")) result = false; return result; }
/// <summary> /// 根据用户ID获取用户信息,ID写在参数的user_id中 /// </summary> /// <param name="user">包含用户id的User类实例</param> /// <returns>成功返回包含用户完整信息的User对象,失败返回null</returns> public User GetUserByID(User user) { User result = null; if (user.User_id == null) { result = null; } else { IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); result = userDAL.GetUserByID(user); } return result; }
/// <summary> /// 更新用户信息,会有isLegalLoginInfo检查的。成功返回true否则返回false /// </summary> /// <param name="user">要更新的user信息</param> /// <returns>成功返回true否则返回false</returns> public Boolean UpdateUserInfo(User user) { Boolean result = true; /* 数据检验 */ if (!isLegalNewUser(user)) { result = false; } else { IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); result = userDAL.UpdateUserInfo(user); } return result; }
/// <summary> /// 判断用户登录是否合法,合法返回登录用户对应的User对象,非法返回null /// User对象的Account Password必填 /// </summary> /// <param name="user">需要判断的User对象</param> /// <returns>User类的实例</returns> public User isLegalLogin(User user) { /* 数据合法性检查 */ if (!isLegalLoginInfo(user)) return null; else { /*操作数据库*/ try { IUserDAL userDAL = DALFactory.CreateInstance<IUserDAL>("UserDAL"); User entireUser = userDAL.GetUserByAccountAndPassword(user); return entireUser; } catch (Exception) { return null; } } }
/// <summary> /// 向新注册的用户发送激活账户的邮件 /// public的原因是因为,重发确认信功能中也要用到 /// </summary> /// <param name="newUser">刚刚创建的用户对应的UI.User实例</param> public void SendVerifyMailToNewUser(User newUser) { #region 准备阶段 //读取信息 /* WebConfig内容 * <add key ="domain" value="http://*****:*****@gmail.com"/> <add key ="MailPassword" value="hhxbyfdopdadawxz"/> <add key ="MailNickname" value ="Avfun管理组"/> <add key ="MailSubject" value ="【Avfun用户管理组账号激活提醒】"/> * */ String WebDomain = ReadAppConfig.GetAppConfig("Domain"); String MailAddress = ReadAppConfig.GetAppConfig("MailAddress"); String MailPassword = ReadAppConfig.GetAppConfig("MailPassword"); String MailNickname = ReadAppConfig.GetAppConfig("MailNickname"); String MailSubject = ReadAppConfig.GetAppConfig("MailSubject"); #endregion #region 发信模块 MailMessage mail = new MailMessage(); //前面是發信email後面是顯示的名稱 mail.From = new MailAddress(MailAddress, MailNickname); //收信者email mail.To.Add(newUser.User_account); //設定優先權 mail.Priority = MailPriority.Normal; //標題 mail.Subject = MailSubject + newUser.User_nickname; //內容 mail.Body = "尊敬的Avfun用户:" + newUser.User_nickname + ":" + "<br/>您好 " + "<br/>您的激活地址是" // WebDomain 以 "/"结尾 + "<br/>" + WebDomain + "checkUser.aspx?VerifyCode=" + newUser.User_verify_code + "<br/>请复制到浏览器中打开,完成激活" + "<br/> Avfun管理组,敬上"; //內容使用html mail.IsBodyHtml = true; //設定gmail的smtp SmtpClient MySmtp = new SmtpClient("smtp.gmail.com", 587); //您在gmail的帳號密碼 MySmtp.Credentials = new System.Net.NetworkCredential(MailAddress, MailPassword); //開啟ssl MySmtp.EnableSsl = true; //發送郵件 MySmtp.Send(mail); //放掉宣告出來的MySmtp MySmtp = null; //放掉宣告出來的mail mail.Dispose(); #endregion 发信模块 }
/// <summary> /// DAL层,根据用户账号密码返回相应信息 /// </summary> /// <param name="user">要查询的UI.User类,账号密码必填</param> /// <returns>若存在返回对应的User类,保存了全部信息,否则返回null</returns> public User GetUserByAccountAndPassword(User user) { User ResultUser = null; avfunEntities DataEntity = DataEntityManager.GetDataEntity(); USER LoginUser = (from usr in DataEntity.USER where usr.user_account == user.User_account && usr.user_password == user.User_password select usr) .Single(); ResultUser = ConvertUSERToUser(LoginUser); return ResultUser; }
public int InsertUser(User user) { return CreateUser(user); }
protected void Page_Load(object sender, EventArgs e) { //判断是否已经登录,注意,由于这里不管是不是postBack,因此取到的对象,timeStamp一定是最新的那个! //换而言之,我们的策略就是LastComesWin——最新的一次提交总是屌的! IUserBLL userBLL = BLLFactory.CreateInstance<IUserBLL>("UserBLL"); User loggedUser = userBLL.isLogged(Request); //未登录 if (loggedUser == null) { //登录界面不显示 loggedDiv.Visible = false; //提示信息 logStatus.Text = "主人大人,您未登录或已经登录过期哦!3秒后自动转向登录页面哦!请登录了再来调戏人家啦"; logStatus.Visible = true; //提示信息开启 //重定向 HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签 RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转 RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("LoginPageURL"); //时间为三秒,跳转到首页 this.Page.Header.Controls.Add(RedirectMeta); } else //已登录 { //显示登录界面 loggedDiv.Visible = true; //提示信息隐藏 logStatus.Visible = false; if (!Page.IsPostBack) { //用户未提交修改信息 //设置页面中对应的用户信息 //账户 txtUserAccount.Text = loggedUser.User_account; //余额 lblMoney.Text = lblMoney.Text + loggedUser.User_money.ToString(); //头像,记得去空格 imgHead.ImageUrl = loggedUser.User_head.Trim(); //简介,记得去空格 txtUserIntroduction.Text = loggedUser.User_introduction.Trim(); //昵称。记得去空格 txtUserNickname.Text = loggedUser.User_nickname.Trim(); if (loggedUser.User_sex) //男生 { UserSex.Items[0].Selected = true; UserSex.Items[1].Selected = false; } else { UserSex.Items[0].Selected = false; UserSex.Items[1].Selected = true; //女生 } } else { //用户提交修改信息,验证的时候注意,从loggedUser里取账号和旧密码,旧密码和输入比对,账号直接带入操作 String oldPassword = Request.Form["txtUserOldPassword"]; String newPassword = Request.Form["txtUserNewPassword"]; String verifyNewPassword = Request.Form["txtUserVerifyNewPassword"]; String userIntroduction = Request.Form["txtUserIntroduction"].Trim(); String userNickname = Request.Form["txtUserNickName"].Trim(); //记得去空格 //头像!这里用完记得立刻释放掉Cookie String userHead = Request.Cookies["userHead"].Value; //转换为布尔型,注意用户性别1为男0为女 String strUserSex = Request.Form["UserSex"].Trim(); Boolean userSex = strUserSex.ToUpper().Trim().Equals("MALE"); User newInfoUser = new User(loggedUser); #region 验证是否需要修改密码 if (!oldPassword.Equals("") && oldPassword != null) //填写了旧密码,意味着要修改密码 { if (!newPassword.Equals(verifyNewPassword)) //新密码与确认密码不匹配 { lblChangePasswordStatus.Text = "新密码与确认密码不匹配,请检查后再输入"; lblChangePasswordStatus.Visible = true; return; //停止提交 } else { if (!userBLL.MD5(oldPassword).Equals(loggedUser.User_password)) { //旧密码与账号密码不匹配 lblChangePasswordStatus.Text = "旧密码输入错误,请重新输入"; lblChangePasswordStatus.Visible = true; return; //停止提交 } else { //旧密码与账号密码匹配,且新密码与确认密码匹配的情况下 if (newPassword.Length > 16 || newPassword.Length < 6) { //新密码长度不对 lblChangePasswordStatus.Text = "新密码长度不正确,请重新提交"; lblChangePasswordStatus.Visible = true; return; //停止提交 } else { //修改后一并提交 newInfoUser.User_password = userBLL.MD5(newPassword); /* //修改用户密码 if (userBLL.ChagneUserPassword(newInfoUser, userBLL.MD5(newPassword))) { //更改成功 lblChangePasswordStatus.Text = "修改密码成功,请重新登录"; lblChangePasswordStatus.Visible = true; return;//停止提交 } else { //更改失败 lblChangePasswordStatus.Text = "修改密码失败,请检查输入是否正确"; lblChangePasswordStatus.Visible = true; return; //停止提交 } * */ } } } } #endregion #region 修改用户信息,这里不用加验证,userBLL里有 newInfoUser.User_introduction = userIntroduction; newInfoUser.User_nickname = userNickname; if (userHead != null) { newInfoUser.User_head = userHead; //这里注意看一下是相对路径还是绝对路径 //释放Cookie HttpCookie userHeadCookie = new HttpCookie("userHead"); userHeadCookie.Path = "/user_pages"; userHeadCookie.Expires = DateTime.Now.AddDays(-1D); Response.Cookies.Add(userHeadCookie); } newInfoUser.User_sex = userSex; #endregion //开始调用BLL if (userBLL.UpdateUserInfo(newInfoUser)) { //修改成功 logStatus.Text = "资料修改成功了哦,3秒后回到用户主页哦"; logStatus.Visible = true; loggedDiv.Visible = false; //重定向 HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签 RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转 RedirectMeta.Content = "3;url=user_index.aspx"; //时间为三秒,跳转到首页 this.Page.Header.Controls.Add(RedirectMeta); } else { //修改失败,给出提示信息 logStatus.Text = "修改资料失败了呢,真是抱歉,是不是主人大人什么地方填错了呢?"; logStatus.Visible = true; } } } }
/// <summary> /// 更新用户信息,数据校验在BLL完成 /// </summary> /// <param name="user">要更新的用户</param> /// <returns>成功true失败false</returns> public Boolean UpdateUserInfo(User user) { Boolean result = true; avfunEntities DataEntity = DataEntityManager.GetDataEntity(); try{ USER newInfoUSER = (from usr in DataEntity.USER where usr.user_id == user.User_id //账号 && usr.user_timestamp == user.User_timestamp //时间戳,注意,这个很重要!确保一致性! select usr ).Single(); // newInfoUSER = ConvertUserToUSER(user); 这是传指针,算了,老实点,一个个拷贝 // newInfoUSER.u_id = user.U_id; 自动生成的不能改 newInfoUSER.user_id = user.User_id; newInfoUSER.user_head = user.User_head; newInfoUSER.user_account = user.User_account; newInfoUSER.user_introduction = user.User_introduction; newInfoUSER.user_isChecked = user.User_isChecked; newInfoUSER.user_isDeleted = user.User_isDeleted; newInfoUSER.user_last_login_ip = user.User_last_login_ip; newInfoUSER.user_last_login_time = user.User_last_login_date; newInfoUSER.user_money = user.User_money; newInfoUSER.user_nickname = user.User_nickname; newInfoUSER.user_password = user.User_password; newInfoUSER.user_sex = user.User_sex; // newInfoUSER.user_timestamp = user.User_timestamp; 妈蛋时间戳不能改啊改了还同步个J8啊! newInfoUSER.user_verify_code = user.User_verify_code; DataEntity.SaveChanges(); result = true; } catch(Exception) { result = false; } return result; }
protected void Page_Load(object sender, EventArgs e) { IUserBLL userBLL = BLLFactory.CreateInstance<IUserBLL>("UserBLL"); if (!Page.IsPostBack) { //第一次打开该页面 //View处理部分: RegResult.Visible = false; //注册结果不可见。 RegUser.Visible = true; //显示注册表单 } else { //用户填写好了表单,回传到了本页。 #region Control处理部分 //获取提交表单的信息,去掉所有前导和滞后空格 String userAccount = Request.Form["UserAccount"].Trim(); String userPassword = Request.Form["UserPassword"]; //密码不用去空格 if (userPassword.Length < 6 || userPassword.Length > 16) { RegResult.Text = "密码长度应该在6-16位之间,请重新输入"; RegResult.Visible = true; return; } String strUserSex = Request.Form["UserSex"].Trim(); String userIntroduction = Request.Form["UserIntroduction"].Trim(); String userNickname = Request.Form["UserNickname"].Trim(); //用户验证码 String regVerifyCode = Request.Form["RegVerifyCode"].Trim().ToUpper(); //最后一次登录IP即为注册IP. String userLastLoginIp = HttpContext.Current.Request.UserHostAddress; //转换为布尔型,注意用户性别1为男0为女 Boolean userSex = strUserSex.ToUpper().Trim().Equals("MALE"); //密码MD5加密 userPassword = userBLL.MD5(userPassword); //测试用语句 /* RegResult.Text = "注册信息为:" + "账号" + userAccount + "密码" + userPassword + "性别" + strUserSex + "密码" + userPassword + "昵称" + userNickname + "最后登录ip" + userLastLoginIp + "个人说明" + userIntroduction; */ if ( //验证码判定 Session[RegVerifyCodeGenerator.strIdentify] != null && regVerifyCode.ToUpper().Equals (Session[RegVerifyCodeGenerator.strIdentify].ToString().ToUpper() ) && !regVerifyCode.Equals("") && regVerifyCode != null ) { //验证码正确,这里记得刷新验证码以防后退提交! Session.Remove(RegVerifyCodeGenerator.strIdentify); //防止后退提交 #region 用户注册,与userBLL打交道 //开始注册用户,数据完整性检查在BLL.userBLL类中 String user_head = "img/01.jpg"; //男生默认头像 if (userSex == false) //是女生 user_head = "img/00.jpg"; //女生默认头像 User newUser = new User(userAccount, userPassword, userNickname, userSex, userLastLoginIp,user_head.Trim()); newUser.User_introduction = userIntroduction; if (userBLL.CreateUser(newUser) > 0) { RegResult.Text = "注册成功!请到您的邮箱" + userAccount + "中打开确认信完成激活,3秒钟之后自动跳转回主页"; RegUser.Visible = false; //注册表单不可见 HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签 RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转 RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("Domain") ; //时间为三秒,跳转到首页 this.Page.Header.Controls.Add(RedirectMeta); } else { RegResult.Text = "注册失败!请检查输入项!"; RegUser.Visible = true; //注册表单可见 } #endregion } else //验证码输入不正确 { RegResult.Text = "验证码验证出错"; //提示状态 RegUser.Visible = true; //注册表单可见 } #endregion #region 通用View处理部分 RegResult.Visible = true; //提示状态 UserPassword.Text = ""; //清空密码框 #endregion } }
/// <summary> /// 注册时用户类的数据完整性检查,其实更改的时候也用得到啦! /// </summary> /// <param name="user">要检查的用户类</param> /// <returns>Boolean,true为合法,false为非法</returns> public Boolean isLegalNewUser(User user) { Boolean result = true; // 用户账号不能为空,不能不写,长度不能小于5,不能大于64 // @z.cn就5个了,怎么也不能比这个小吧? if (user.User_account == null || user.User_account.Equals("") || user.User_account.Length < 5 || user.User_account.Length > 64) { result = false; } String user_password = user.User_password; // 用户密码不能为空,不能不写,长度不能不等于32,传进来的时候就应该是加密过的 if (user_password == null || user_password.Equals("") || user.User_password.Length != 32) { result = false; } // 最后登录ip不能为空,也不能不写,长度不能大于64,不能小于8 // 0.0.0.0. —— 8 if (user.User_last_login_ip == null || user.User_last_login_ip.Equals("") || user.User_last_login_ip.Length > 64 || user.User_last_login_ip.Length < 8) { result = false; } // 头像不能为空, 不能不写,长度不能大于256 if (user.User_head == null || user.User_head.Equals("") || user.User_head.Length > 256) { result = false; } // 昵称不能为空,不能不写,长度不能小于1,不能大于32 if (user.User_nickname == null || user.User_nickname.Equals("") || user.User_nickname.Length < 1 || user.User_nickname.Length > 32) { result = false; } //余额不能小于0 if (user.User_money < 0.0f) { result = false; } //如有自我介绍,则自我介绍长度不能大于256 if (user.User_introduction != null && user.User_introduction.Length > 256) { result = false; } return result; }
protected void Page_Load(object sender, EventArgs e) { IUserBLL userBLL = BLLFactory.CreateInstance<IUserBLL>("UserBLL"); if (!Page.IsPostBack) { //第一次访问 LoginForm.Visible = true; } else { //提交回来了,校验。 String userAccount = Request.Form["UserAccount"].Trim(); String userPassword = Request.Form["UserPassword"]; String loginVerifyCode = Request.Form["LoginVerifyCode"]; //先校验验证码 if ( Session[LoginVerifyCodeGenerator.strIdentify] != null && Session[LoginVerifyCodeGenerator.strIdentify].ToString().ToUpper().Equals (loginVerifyCode.ToUpper() ) && !loginVerifyCode.Equals("") && loginVerifyCode != null //以上三行防止后退提交用的 ) { Session.Remove(LoginVerifyCodeGenerator.strIdentify); //防止后退提交 //验证码校验通过,设定要取回的User的账号密码 User verifyUser = new User(); verifyUser.User_account = userAccount; verifyUser.User_password = userBLL.MD5(userPassword); //验证用户是否是合法登录请求 User entireUser = userBLL.isLegalLogin(verifyUser); if (entireUser == null) //账号或密码错误,未注册,都是这个 { LoginInfo.Text = "账号或密码错误"; LoginForm.Visible = true; } else { //登录成功,更改提示信息,更新登录信息中的IP和日期,这里记得换成UpdateUserInfo! entireUser.User_last_login_date = DateTime.Now; //获取当前登录日期 entireUser.User_last_login_ip = HttpContext.Current.Request.UserHostAddress; //最后一次登录ip userBLL.UpdateUserInfo(entireUser); LoginInfo.Text = "登录成功!3秒后跳转回主页"; //授予Cookies,相当于授权了 HttpCookie userAccountCookie = new HttpCookie("userAccount"); HttpCookie userPasswordCookie = new HttpCookie("userPassword"); userAccountCookie.Value = verifyUser.User_account; userPasswordCookie.Value = verifyUser.User_password; if (RememberMe.Checked) //这个判断很诡异,貌似Request.Form不好用的样子。 { //如果选了RememberMe就保留一个星期 userPasswordCookie.Expires = DateTime.Now.AddDays(7D); userAccountCookie.Expires = DateTime.Now.AddDays(7D); } else { //否则只保存1天 userPasswordCookie.Expires = DateTime.Now.AddDays(1D); userAccountCookie.Expires = DateTime.Now.AddDays(1D); } //添加Cookie,相当于授权 Response.Cookies.Add(userAccountCookie); Response.Cookies.Add(userPasswordCookie); //重定向 HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签 RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转 RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("Domain"); //时间为三秒,跳转到首页 this.Page.Header.Controls.Add(RedirectMeta); //UI操作 LoginForm.Visible = false; } } else { //验证码校验失败 LoginInfo.Text = "验证码输入错误,请检查"; LoginForm.Visible = true; } } }
/// <summary> /// 根据参数中User类实例的user_id获取包含完整信息的User对象 /// </summary> /// <param name="user">包含user_id的User类实例</param> /// <returns>成功返回包含完整信息的User类实例,失败返回null</returns> public User GetUserByID(User user) { avfunEntities DataEntity = DataEntityManager.GetDataEntity(); User result = null; try { USER ResultUSER = ( from usr in DataEntity.USER where usr.user_id == user.User_id select usr ).Single(); result = ConvertUSERToUser(ResultUSER); } catch { result = null; } return result; }