private BaseState GetPassWordByEmail(string baseurl, GetPwdModel model) { if (!Dev.Comm.Validate.Validate.IsEmail(model.UserName)) { return new BaseState(-1, "用户名非邮箱!"); } var nick = this.GetNickNameByUserName(model.UserName); var token = WebSecurity.GeneratePasswordResetToken(model.UserName); var mail = SystemMessagerManager.GetContentForGetPass(baseurl, nick, token); var isok = SystemMessagerManager.SendValidateMail(baseurl, model.UserName, nick, "找回密码", mail); if (isok) { return new BaseState(); } return new BaseState { ErrorCode = -1, ErrorMessage = "发送邮件失败" }; }
public ActionResult GetPwd(GetPwdModel model) { var code = (this.SessionGet<string>(SessionName.验证码) ?? "").ToLower(); this.SessionRemove(SessionName.验证码); if (model.Validcode.ToLower() != code) { this.ModelState.AddModelError("Validcode", "验证码不正确"); return View(model); } // 用户没有本地密码,因此将删除由于缺少 // OldPassword 字段而导致的所有验证错误 var state = this.ModelState["GetPwdType"]; if (state != null) { state.Errors.Clear(); } if (this.ModelState.IsValid) { var bs = this._userService.GetPassWord(Dev.Comm.Web.HttpServerInfo.BaseUrl, model); if (bs.ErrorCode == 0) { if (model.GetPwdType == 0) return this.View("_GetPwdMailSucess", model: model.UserName); else return this.View("_GetPwdNext", model: bs.ErrorMessage); } else { if (bs.ErrorCode == -3) return this.Message("此用户还未激活,激活后继续", this.Url.Action("EmailActivation", new { email = model.UserName })); this.ModelState.AddModelError("", "" + bs.ErrorMessage); } } return this.View(); }
private BaseState GetPassWordByPhone(GetPwdModel model) { var userid = WebSecurity.GetUserId(model.UserName); var uid = this.GetUidByUserId(userid); var profile = this._userProfileRepository.FindOne(x => x.UserId == userid); if (profile == null) return new BaseState(-1, "用户不存在"); var phone = profile.Phone; if (string.IsNullOrEmpty(phone)) { return new BaseState(-1, "用户还未设置手机号"); } if (profile.LastPhonePasswordResetTokenTime.HasValue && profile.LastPhonePasswordResetTokenTime.Value.AddMinutes(1) > System.DateTime.Now || profile.PhonePasswordResendCount.HasValue && profile.PhonePasswordResendCount >= 5 && profile.LastPhonePasswordResetTokenTime.HasValue && profile.LastPhonePasswordResetTokenTime.Value.AddHours(1) > System.DateTime.Now) { return new BaseState(-1, "短信发送过于频繁,请稍后再试"); } var code = this.GeneratePhonePasswordResetToken(model.UserName); var message = "尊敬的" + phone + ",您好!XXXXX发送给您的认证码是" + code + ",请在网站上输入,找回XXXXX密码。如非本人操作,请忽略。"; var issend = SystemMessagerManager.SendSMS(phone, message, uid); if (!issend) return new BaseState(-1, "发送失败"); return new BaseState(0, phone + "," + model.UserName); }
public BaseState GetPassWord(string baseurl, GetPwdModel model) { var exist = this._userProfileRepository.FindOne(x => x.Email == model.UserName); // .UserExists(model.UserName); if (exist == null) { return new BaseState(-2, "邮箱不正确"); } if (!WebSecurity.IsConfirmed(model.UserName)) { return new BaseState(-3, "此帐户还未激活"); } if (model.GetPwdType == 0) { return this.GetPassWordByEmail(baseurl, model); } else if (model.GetPwdType == 1) { return this.GetPassWordByPhone(model); } throw new ArgumentException("类型只能为0,1", "model.GetPwdType"); }