예제 #1
0
 /// <summary>
 /// 保存cookie
 /// </summary>
 /// <param name="user"></param>
 private void SaveCookie(User user)
 {
     Response.Cookies.Append("userName", user.Mail,
                             new CookieOptions()
     {
         Expires  = new DateTimeOffset(DateTime.Now.AddYears(1)),
         HttpOnly = true
     });
     //这里好像做了自动url编码
     Response.Cookies.Append("userId", EncryptDecryptExtension.DES3Encrypt(user.Id.ToString(), DESKey),
                             new CookieOptions()
     {
         Expires  = new DateTimeOffset(DateTime.Now.AddMonths(1)),
         HttpOnly = true
     });
 }
예제 #2
0
        public async Task <RequestMessage> Register(string mail, string passwod)
        {
            var requestMessage = new RequestMessage()
            {
                IsSuccess = true
            };
            var user = await _collectionDBCotext.Users
                       .Where(t => t.Mail == mail)
                       .Select(t => new { t.Id, t.Passwod })
                       .FirstOrDefaultAsync();

            if (user == null || user.Passwod != passwod)//注册 或 修改密码
            {
                requestMessage.IsSuccess = false;

                RedisHelper reids  = new RedisHelper(3);
                var         key    = mail;
                var         number = await reids.GetStringIncrAsync(key);

                if (number >= 3)
                {
                    requestMessage.Message = "请勿频繁注册,请查看垃圾邮件或换一个邮箱注册!";
                    return(requestMessage);
                }
                //30分钟内有效(标记邮件激活30分钟内有效)
                await reids.SetStringIncrAsync(key, TimeSpan.FromMinutes(30));

                if (user == null)
                {
                    requestMessage.Message = "第一次登录,验证链接已发邮箱。";
                }
                else
                {
                    requestMessage.Message = "您的密码有变更,验证链接已发邮箱。";
                }

                var data = JsonConvert.SerializeObject(new User()
                {
                    Mail = mail, Passwod = passwod
                });
                var         DESString = HttpUtility.UrlEncode(EncryptDecryptExtension.DES3Encrypt(data, DESKey));
                EmailHelper email     = new EmailHelper();
                email.MailToArray = new string[] { mail };
                var checkUrl = Request.Scheme + "://" + Request.Host.Value + "/Home/CheckLogin?desstring=" + DESString;
                email.MailSubject = "欢迎您注册 爱收藏";
                email.MailBody    = EmailHelper.TempBody(mail, "请复制打开链接(或者右键'在新标签页中打开'),完成验证。", "<a style='word-wrap: break-word;word-break: break-all;' href='" + checkUrl + "'>" + checkUrl + "</a>");
                email.Send(t =>
                {
                    //string aa = "成功";
                }, t =>
                {
                    //string aa = "失败";
                });
            }
            else
            {
                SaveCookie(new Entities.User()
                {
                    Id = user.Id, Mail = mail
                });
            }
            return(requestMessage);
        }