/// <summary> /// 通过id获取验证信息 /// </summary> /// <param name="id">验证信息id</param> /// <returns>验证信息</returns> public static 提交验证 获取(guid id) { try { 提交验证 a; using (commondbentities c = new commondbentities()) { a = c.提交验证.first(f => f.id == id); } return a; } catch { return null; } }
验证用户提交信息的方法:
/// <summary> /// 验证用户输入的验证码是否正确 /// </summary> /// <param name="id">验证信息id</param> /// <param name="验证码">用户输入的验证码</param> /// <returns>返回错误信息,如验证成功则返回null</returns> public static string 验证(guid id, string 验证码) { var 验证信息 = 提交验证.获取(id); if (验证信息 == null) return "验证信息无效或已过期"; else if (验证信息.过期时间 < datetime.now) return "验证信息已过期"; else if (验证信息.是否已提交) return "信息已被提交过"; else if (验证信息.会话id.trim() != httpcontext.current.session.sessionid) return "验证信息被非法劫持"; else if (验证信息.验证码.trim().tolower() != 验证码.tolower()) return "验证码错误"; else return null; }
标记已提交信息及清理超时信息的方法:
/// <summary> /// 将指定id的验证信息设为已提交 /// </summary> /// <param name="id">验证信息id</param> public static void 设为已提交(guid id) { using (commondbentities c = new commondbentities()) { var a = c.提交验证.first(f => f.id == id); a.是否已提交 = true; c.savechanges(); } 清理(false); }
/// <summary> /// 清理数据库中已失效的旧数据 /// </summary> /// <param name="是否清理已提交的数据">是否连带清理已提交过的数据,否则只清理过期数据< /param> /// <returns>波及的数据总量</returns> public static int 清理(bool 是否清理已提交的数据) { int x = 0; using (commondbentities c = new commondbentities()) { var a = c.提交验证.where(f => f.过期时间 < datetime.now || (是否清理已提交的数据 ? f.是否已提交 : false)); foreach (提交验证 f in a) { c.deleteobject(f); } x=c.savechanges(); } return x; }