/// <summary> /// 生成Token /// </summary> /// <param name="mo">授权用户信息</param> /// <returns></returns> public static string TokenMake(UserInfo mo) { var key = GlobalTo.GetValue("VerifyCode:Key"); var token = CalcTo.EnDES(new { mo = new { mo.UserId, mo.UserName, mo.Nickname, mo.UserSign, mo.UserPhoto }, expired = DateTime.Now.AddDays(10).ToTimestamp() }.ToJson(), key); return(token); }
/// <summary> /// 验证 /// </summary> /// <returns></returns> public IActionResult Verify() { var vm = new ActionResultVM(); var id = RouteData.Values["id"]?.ToString().ToUpper(); if (!string.IsNullOrWhiteSpace(id)) { var uinfo = new UserAuthAid(HttpContext).Get(); switch (id.ToLower()) { //发送验证邮箱 case "send": { if (User.Identity.IsAuthenticated) { using var db = new ContextBase(); var usermo = db.UserInfo.Find(uinfo.UserId); if (usermo.UserMailValid == 1) { vm.msg = "邮箱已经完成验证"; } else if (string.IsNullOrWhiteSpace(usermo.UserMail)) { vm.msg = "邮箱不能为空"; } else { var cacheKey = "Global_VerifyMail_" + usermo.UserMail; var issend = CacheTo.Get(cacheKey) as bool?; if (issend == true) { vm.msg = "1分钟内只能发送一次验证信息"; } else { var tml = FileTo.ReadText(GlobalTo.WebRootPath + "/lib/mailchecker/", "list.txt"); if (tml.Contains(usermo.UserMail.Split('@').LastOrDefault())) { vm.msg = "该邮箱已被屏蔽"; } else { //发送验证 var ToMail = usermo.UserMail; var vjson = new { mail = ToMail, ts = DateTime.Now.ToTimestamp() }.ToJson(); var vcode = CalcTo.EnDES(vjson, GlobalTo.GetValue("VerifyCode:Key")).ToLower(); var VerifyLink = string.Format(GlobalTo.GetValue("VerifyCode:Url"), vcode); var txt = FileTo.ReadText(GlobalTo.WebRootPath + "/template/", "sendmailverify.html"); txt = txt.Replace("@ToMail@", ToMail).Replace("@VerifyLink@", VerifyLink); vm = MailAid.Send(ToMail, "验证你的邮箱", txt); if (vm.code == 200) { vm.msg = "已发送成功"; CacheTo.Set(cacheKey, true, 60, false); } } } } } else { vm.msg = "请登录"; } } break; //验证邮箱 default: try { var vjson = CalcTo.DeDES(id, GlobalTo.GetValue("VerifyCode:Key")).ToJObject(); if (DateTime.Now.ToTimestamp() - Convert.ToInt32(vjson["ts"]) < 60 * 5) { var mail = vjson["mail"].ToString(); if (string.IsNullOrWhiteSpace(mail)) { vm.msg = "邮件地址有误"; } else { using var db = new ContextBase(); var usermo = db.UserInfo.FirstOrDefault(x => x.UserMail == mail); if (usermo != null) { if (usermo.UserMailValid == 1) { vm.msg = "已验证,勿重复验证"; } else { usermo.UserMailValid = 1; db.UserInfo.Update(usermo); int num = db.SaveChanges(); vm.Set(num > 0); if (vm.code == 200) { vm.msg = "恭喜你,验证成功"; } } } else { vm.msg = "邮件地址无效"; } } } else { vm.msg = "链接已过期(5分钟内有效)"; } } catch (Exception) { vm.msg = "链接已失效"; } break; } } else { vm.msg = "缺失验证码信息"; } return(View(vm)); }