|
此前我介紹了使用數(shù)據(jù)庫(kù)實(shí)現(xiàn)的提交驗(yàn)證方案,一些朋友懷疑其效率不佳,認(rèn)為Session是更好的方案。
的確使用Session也不會(huì)消耗太多內(nèi)存,而且如今內(nèi)存白菜價(jià),最不濟(jì)就隨手買個(gè)2G的插上也就夠了,所以我將在此寫(xiě)下Session版的實(shí)現(xiàn)提要,其余細(xì)節(jié)參考前篇。
實(shí)現(xiàn)方案簡(jiǎn)述:
在Session中存儲(chǔ)一個(gè)哈希表用以記錄該用戶的每一條驗(yàn)證信息,哈希表的鍵為驗(yàn)證信息的過(guò)期時(shí)間,值為驗(yàn)證碼的明文。
過(guò)期時(shí)間使用ViewState存儲(chǔ),以發(fā)給客戶端,并在提交時(shí)獲取,以讀取對(duì)應(yīng)的驗(yàn)證碼明文。
傳給驗(yàn)證碼生成頁(yè)面的ID參數(shù)是經(jīng)ToFileTime()方法轉(zhuǎn)換的過(guò)期時(shí)間,驗(yàn)證碼生成頁(yè)獲取到此參數(shù)后進(jìn)行逆轉(zhuǎn)換,再讀取對(duì)應(yīng)的驗(yàn)證碼明文以生成顯示。
代碼講解:
先建立一個(gè)靜態(tài)類,名為“提交驗(yàn)證”,將用于存儲(chǔ)驗(yàn)證信息的Session變量封裝為一個(gè)屬性:
///
/// 驗(yàn)證信息表
///
static Hashtable 驗(yàn)證信息
{
get
{
return Core.函數(shù)庫(kù).網(wǎng)絡(luò).Session["驗(yàn)證信息"] as Hashtable;
}
set
{
Core.函數(shù)庫(kù).網(wǎng)絡(luò).Session["驗(yàn)證信息"] = value;
}
}
NET技術(shù):較為周全的Asp.net提交驗(yàn)證方案(Session版),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。