/// <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; }