/// <summary> /// 获取登录用户id /// </summary> /// <returns></returns> private int GetUserId(string userId = null) { var userIdCookie = userId ?? Request.Cookies.First(t => t.Key == "userId").Value; var userIdString = EncryptDecryptExtension.DES3Decrypt(userIdCookie, DESKey); return(int.Parse(userIdString)); }
private int GetUserId() { var userIdCookie = Request.Cookies.FirstOrDefault(t => t.Key == "userId").Value; if (string.IsNullOrWhiteSpace(userIdCookie)) { return(0); } var userIdString = EncryptDecryptExtension.DES3Decrypt(userIdCookie, DESKey); return(int.Parse(userIdString)); }
public async Task <RequestMessage> CheckLogin(string desstring) { var requestMessage = new RequestMessage(); var jsonString = string.Empty; try { //这里有点妖啊。 //如果是url直接跳转过来的就不需要HttpUtility.UrlDecode //如果是ajax异步传过来的就需要HttpUtility.UrlDecode jsonString = EncryptDecryptExtension.DES3Decrypt(HttpUtility.UrlDecode(desstring), DESKey); } catch (Exception) { jsonString = EncryptDecryptExtension.DES3Decrypt(desstring, DESKey); } var dataUser = JsonConvert.DeserializeObject <User>(jsonString); RedisHelper reids = new RedisHelper(3); if (!await reids.KeyExistsAsync(dataUser.Mail, RedisTypePrefix.String)) { requestMessage.IsSuccess = false; requestMessage.Message = "激活链接已失效"; return(requestMessage);// } var user = await _collectionDBCotext.Users.Where(t => t.Mail == dataUser.Mail).FirstOrDefaultAsync(); if (user != null)//修改密码 { user.Passwod = dataUser.Passwod; } else//新增用户 { user = dataUser; _collectionDBCotext.Users.Add(user); await _collectionDBCotext.SaveChangesAsync(); _collectionDBCotext.Types.Add(new Entities.Type() { Name = "常用链接", UserId = user.Id, Sort = 1024 }); } await _collectionDBCotext.SaveChangesAsync(); SaveCookie(user); await reids.DeleteKeyAsync(dataUser.Mail, RedisTypePrefix.String);//删除缓存,使验证过的邮件失效 return(requestMessage); }
/// <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 }); }
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); }