Пример #1
0
        public ActionResult Register(RegisterModel model)
        {
            var code = (this.SessionGet <string>(SessionName.验证码) ?? "").ToLower();

            this.SessionRemove(SessionName.验证码);

            if (model.Validcode.ToLower() != code)
            {
                this.ModelState.AddModelError("Validcode", "验证码不正确");
                return(View(model));
            }
            if (this.ModelState.IsValid)
            {
                if (this._userService.UserNickExist(model.NickName))
                {
                    this.ModelState.AddModelError("NickName", "昵称已经被使用");
                    return(View(model));
                }

                // 尝试注册用户
                try
                {
                    var token = WebSecurity.CreateUserAndAccount(model.UserName, model.Password,
                                                                 new
                    {
                        Email = model.UserName,
                        model.NickName,
                        model.Sex,
                        model.Province,
                        model.City,
                        model.ProvinceName,
                        model.CityName
                    }, true);

                    var userid = WebSecurity.GetUserId(model.UserName);

                    var uid = this._userService.InserOrUpdateExtUid(userid);


                    SystemMessagerManager.SendValidateMail(Dev.Comm.Web.HttpServerInfo.BaseUrl, model.UserName, model.NickName, "邮件激活",
                                                           SystemMessagerManager.ActMessage(Dev.Comm.Web.HttpServerInfo.BaseUrl, model.UserName,
                                                                                            model.NickName, token));


                    return(this.RedirectToAction("EmailActivation", new { email = model.UserName }));
                }
                catch (MembershipCreateUserException e)
                {
                    this.ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return(View(model));
        }
Пример #2
0
        public ActionResult ResendToken(string email)
        {
            if (WebSecurity.IsConfirmed(email))
            {
                return(this.Json(false));
            }

            var NickName = this._userService.GetNickNameByUserName(email);

            var token = this._userService.GetTokenByUserName(email);

            SystemMessagerManager.SendValidateMail(Dev.Comm.Web.HttpServerInfo.BaseUrl, email, NickName, "邮件激活",
                                                   SystemMessagerManager.ActMessage(Dev.Comm.Web.HttpServerInfo.BaseUrl, email, NickName, token));

            return(this.Json(true));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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 = "发送邮件失败"
            });
        }