两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種防止數據重復提交的方法和服務器的制造方法

文檔序號:7799188閱讀:266來源:國知局
一種防止數據重復提交的方法和服務器的制造方法
【專利摘要】本發(fā)明提出一種防止數據重復提交的方法及服務器,其中方法包括:生成當前網頁對應的身份標識、令牌(Token)和令牌名(TokenName),保存所述身份標識與TokenName的組合與Token的對應關系;將所述身份標識、Token和TokenName發(fā)送至客戶端;接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName;查找是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,則刪除所述查找到的Token及其對應的身份標識與TokenName的組合。本發(fā)明能夠不依賴于會話(Session)機制實現防止數據重復提交。
【專利說明】一種防止數據重復提交的方法和服務器
【技術領域】
[0001]本發(fā)明涉及Web應用系統(tǒng)【技術領域】,尤其涉及一種防止數據重復提交的方法和服務器。
【背景技術】
[0002]在當今的Web應用系統(tǒng)中,都會存在一些重要操作,比如提交申請或網銀支付。而這些操作都可能會因為網絡的延遲、應用系統(tǒng)服務超時或其它原因造成數據重復提交,目前,絕大多數Web應用系統(tǒng)中都會自己開發(fā)或采用開源框架實現防止數據重復提交的功倉泛。
[0003]目前,防止數據重復提交的方法實現方式如下:
[0004]第一階段,如圖1所示,用戶進入網頁后,Web應用系統(tǒng)生成每個用戶的會話(Session),并生成該Session對應的令牌(Token),保存該Token ;同時,Web應用系統(tǒng)將該Token存儲在網頁信息中,并將該網頁信息發(fā)送至客戶端。
[0005]第二階段,如圖2所示,用于提交網頁時,Web應用系統(tǒng)獲取網頁中的Token,并獲取本地保存的當前Session所對應的Token,判斷網頁中的Token與當前Session所對應的Token是否一致,如果是,則表明用戶是正常提交數據;否則,表明該用戶是重復提交數據。
[0006]可見,現有的防止數據重復提交的方法必須依賴于Session機制;而對于集群部署Web應用系統(tǒng),大部分采用禁用Session,即使可以使用Session,也必須保證每臺機器的Session 一致??梢?,現有的防止數據重復提交的方法因必須依賴于Session機制而存在一定的使用限制。

【發(fā)明內容】

[0007]本發(fā)明提供了一種防止數據重復提交的方法,能夠不依賴于Session機制防止數據重復提交。
[0008]本發(fā)明還提供了一種防止數據重復提交的服務器,能夠不依賴于Session機制防止數據重復提交。
[0009]本發(fā)明的技術方案是這樣實現的:
[0010]一種防止數據重復提交的方法,包括:
[0011]生成當前網頁對應的身份標識、令牌(Token)和令牌名(TokenName),保存所述身份標識與TokenName的組合與Token的對應關系;將所述身份標識、Token和TokenName發(fā)送至客戶端;
[0012]接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName ;查找是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,則刪除所述查找到的Token及其對應的身份標識與TokenName的組合。
[0013]上述方法中,生成當前網頁的身份標識的方式可以為:[0014]判斷所述當前網頁的Cookie中是否保存有當前網頁對應的身份標識,如果沒有,則生成所述當前網頁對應的身份標識,并將所述身份標識保存在當前網頁的Cookie中。
[0015]保存身份標識與TokenName的組合與Token的對應關系方式可以為:
[0016]將所述身份標識與TokenName作為緩存鍵值(Key),并將Token作為該緩存Key對應的緩存值(Value)進行保存。
[0017]將身份標識、Token和TokenName發(fā)送至客戶端的方式可以為:
[0018]將所述身份標識攜帶在當前網頁的Cookie中,并將所述當前網頁的Cookie發(fā)送至客戶端;
[0019]并且,將所述Token和TokenName攜帶在當前網頁的信息中,并將所述當前網頁的信息發(fā)送至客戶端。
[0020]查找是否保存有該身份標識與TokenName的組合所對應的Token之前可以進一步包括:
[0021]如果從所述網頁數據提交請求中無法獲取到身份標識、Token和TokenName中的任意一個,則向所述客戶端反饋數據提交失敗消息。
[0022]當查找到沒有保存該身份標識與TokenName的組合所對應的Token時,可以向所述客戶端反饋數據提交失敗消息;
[0023]當判斷出從網頁數據提交請求中獲取的Token與查找到的Token不一致時,可以向所述客戶端反饋數據提交失敗消息;
[0024]刪除查找到的Token及其對應的身份標識與TokenName的組合之后可以進一步包括:判斷是否刪除成功,如果是,則向所述客戶端反饋數據提交成功消息;否則,向所述客戶端反饋數據提交失敗消息。
[0025]一種防止數據重復提交的服務器,包括:
[0026]標識生成模塊,用于生成當前網頁對應的身份標識、Token和TokenName,
[0027]標識保存模塊,用于保存所述身份標識與TokenName的組合與Token的對應關系;
[0028]標識發(fā)送模塊,用于將所述身份標識、Token和TokenName發(fā)送至客戶端;
[0029]重復提交判斷模塊,用于接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName ;查找所述標識保存模塊中是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,則刪除所述查找到的Token及其對應的身份標識與TokenName的組合。
[0030]上述服務器中,標識生成模塊可以判斷所述當前網頁的Cookie中是否保存有當前網頁對應的身份標識,如果沒有,則生成所述當前網頁對應的身份標識,并將所述身份標識保存在當前網頁的Cookie中。
[0031]標識保存模塊保存身份標識與TokenName的組合與Token的對應關系方式可以為:將所述身份標識與TokenName作為緩存Key,并將Token作為該緩存Key對應的緩存Value進行保存。
[0032]標識發(fā)送模塊可以將所述身份標識攜帶在當前網頁的Cookie中,并將所述當前網頁的Cookie發(fā)送至客戶端;并且,將所述Token和TokenName攜帶在當前網頁的信息中,并將所述當前網頁的信息發(fā)送至客戶端。
[0033]重復提交判斷模塊還可以用于,當從所述網頁數據提交請求中無法獲取到身份標識、Token和TokenName中的任意一個時,向所述客戶端反饋數據提交失敗消息。
[0034]當查找到標識保存模塊中沒有保存該身份標識與TokenName的組合所對應的Token時,向所述客戶端反饋數據提交失敗消息;當判斷出從網頁數據提交請求中獲取的Token與查找到的Token不一致時,向所述客戶端反饋數據提交失敗消息;
[0035]刪除查找到的Token及其對應的身份標識與TokenName的組合之后,進一步判斷是否刪除成功,如果是,則向所述客戶端反饋數據提交成功消息;否則,向所述客戶端反饋數據提交失敗消息。
[0036]可見,本發(fā)明提出的防止數據重復提交的方法和服務器,能夠基于Cookie機制和緩存機制實現防止數據重復提交,從而解除了對Session機制的依賴。
【專利附圖】

【附圖說明】
[0037]圖1為現有技術中防止數據重復提交的方法階段一示意圖;
[0038]圖2為現有技術中防止數據重復提交的方法階段二示意圖;
[0039]圖3為本發(fā)明提出的防止數據重復提交的方法實現流程圖;
[0040]圖4為實施例一中用戶進入網頁階段的實現流程圖;
[0041]圖5為實施例一中用戶提交網頁階段的實現流程圖。
[0042]圖6為本發(fā)明提出的防止數據重復提交的服務器結構示意圖。
【具體實施方式】
[0043]本發(fā)明提出一種防止數據重復提交的方法,如圖3為該方法實現流程圖,包括:
[0044]步驟301:生成當前網頁對應的身份標識、Token和TokenName,保存所述身份標識與TokenName的組合與Token的對應關系;將所述身份標識、Token和TokenName發(fā)送至客戶端;
[0045]步驟302:接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName ;
[0046]步驟303:查找是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則執(zhí)行步驟304 ;
[0047]步驟304:判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,則執(zhí)行步驟305 ;
[0048]步驟305:刪除所述查找到的Token及其對應的身份標識與TokenName的組合。
[0049]上述步驟301中,生成當前網頁的身份標識的方式可以為:判斷當前網頁的Cookie中是否保存有當前網頁對應的身份標識,如果沒有,則生成當前網頁對應的身份標識,并將所述身份標識保存在當前網頁的Cookie中。
[0050]上述步驟301中,保存身份標識與TokenName的組合與Token的對應關系方式可以為:將身份標識與TokenName作為緩存Key,并將Token作為該緩存Key對應的緩存Value進行保存。
[0051]上述步驟301中,將身份標識、Token和TokenName發(fā)送至客戶端的方式可以為:將身份標識攜帶在當前網頁的Cookie中,并將當前網頁的Cookie發(fā)送至客戶端;將Token和TokenName攜帶在當前網頁的信息中,并將當前網頁的信息發(fā)送至客戶端。
[0052]上述步驟302之后、并在步驟303之前可以進一步包括:如果從網頁數據提交請求中無法獲取到身份標識、Token和TokenName中的任意一個,貝U向客戶端反饋數據提交失敗消息。
[0053]上述步驟303可以進一步包括:當查找到沒有保存該身份標識與TokenName的組合所對應的Token時,向客戶端反饋數據提交失敗消息;
[0054]上述步驟304可以進一步包括:當判斷出從網頁數據提交請求中獲取的Token與查找到的Token不一致時,向所述客戶端反饋數據提交失敗消息;
[0055]上述步驟305之后可以進一步包括:判斷是否刪除成功,如果是,則向客戶端反饋數據提交成功消息;否則,向客戶端反饋數據提交失敗消息。
[0056]以下舉具體的實施例詳細介紹。
[0057]實施例一:
[0058]本實施例基于Cookie機制和緩存機制實現防止網頁數據重復提交。本實施例可以包括用戶進入網頁和提交網頁兩個階段。如圖4為本實施例中用戶進入網頁階段的實現流程圖,圖5為本實施例中用戶提交網頁階段的實現流程圖。以下分別介紹上述兩個階段。
[0059]階段一:用戶進入頁面。如圖4所示,包括如下步驟:
[0060]步驟401:用戶進入頁面。
[0061]步驟402:服務器查詢當前頁面的Cookie中是否存在當前網頁在當前會話中的身份標識,如果沒有,則生成當前網頁在當前會話中的身份標識,將該身份標識保存入當前頁面的Cookie中,將Cookie發(fā)送至客戶端;如果有,貝1J直接將Cookie發(fā)送至客戶端。
[0062]步驟403:服務器生成當前網頁的Token和TokenName,將上述身份標識與TokenName作為緩存Key,并將Token作為該緩存Key對應的緩存Value進行保存。
[0063]步驟404:服務器將上述Token和TokenName攜帶在當前網頁的信息中,并將當前網頁的信息發(fā)送至客戶端,由客戶端展示頁面。
[0064]通過本階段,服務器將當前網頁的身份標識、Token和TokenName發(fā)送至客戶端。之后,客戶端在提交網頁時,可以將身份標識、Token和TokenName上報至服務器,以便服務器對該客戶端進行驗證,具體如以下階段二:
[0065]階段二:提交網頁,如圖5所示,包括如下步驟:
[0066]步驟501:用戶提交網頁,向服務器發(fā)送網頁數據提交請求。
[0067]步驟502:服務器獲取Cookie中的身份標識,判斷是否有身份標識,如果有,則繼續(xù)執(zhí)行步驟503 ;否則,執(zhí)行步驟509。
[0068]步驟503:服務器獲取網頁中的TokenName,判斷是否有TokenName,如果有,則繼續(xù)執(zhí)行步驟504 ;否則,執(zhí)行步驟509。
[0069]步驟504:服務器獲取網頁中的Token,判斷是否有Token,如果有,則繼續(xù)執(zhí)行步驟505 ;否則,執(zhí)行步驟509。
[0070]步驟505:服務器將步驟502中獲取的身份標識和步驟503中獲取的TokenName作為緩存Key,在緩存中查找該緩存Key對應的緩存Value (即Token);如果有,則繼續(xù)執(zhí)行步驟506 ;否則,執(zhí)行步驟509。[0071]步驟506:服務器比較步驟505中查找到的緩存Value (即Token)與步驟504中獲取的Token是否一致,如果一致,則繼續(xù)執(zhí)行步驟507 ;否則,執(zhí)行步驟509。
[0072]步驟507:服務器刪除上述步驟505中查找到的緩存Key及其對應的緩存Value,如果刪除成功,則繼續(xù)執(zhí)行步驟508 ;否則,執(zhí)行步驟509。
[0073]由于重復提交的判斷依據為:相同的Token和相同的身份標識同時提交。服務器在處理兩次相同的提交請求時,只有第一次才能刪除緩存成功;相同的第二次請求則刪除失敗,從而達到了防止用戶重復提交數據的目的。
[0074]步驟508:判定當前請求為正常請求,向客戶端反饋數據提交成功消息,繼續(xù)執(zhí)行步驟510。
[0075]步驟509:判定當前請求為非法請求,向客戶端反饋數據提交失敗消息。
[0076]步驟510:客戶端根據服務器反饋的數據提交成功/失敗消息,跳轉至數據提交成功/失敗頁面。
[0077]本發(fā)明還提出一種防止數據重復提交的服務器,如圖6為該服務器的結構示意圖,包括:
[0078]標識生成模塊601,用于生成當前網頁對應的身份標識、Token和TokenName,
[0079]標識保存模塊602,用于保存所述身份標識與TokenName的組合與Token的對應關系;
[0080]標識發(fā)送模塊603,用于將所述身份標識、Token和TokenName發(fā)送至客戶端;[0081 ] 重復提交判斷模塊604,用于接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName ;查找所述標識保存模塊602中是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,則刪除所述查找到的Token及其對應的身份標識與TokenName的組合。
[0082]上述服務器中,標識保存模塊602可以置于所述服務器中;也可以是置于網絡的緩存服務器中,與服務器通過網絡結構連接。
[0083]上述服務器中,標識生成模塊601判斷所述當前網頁的Cookie中是否保存有當前網頁對應的身份標識,如果沒有,則生成所述當前網頁對應的身份標識,并將所述身份標識保存在當前網頁的Cookie中。
[0084]標識保存模塊602保存身份標識與TokenName的組合與Token的對應關系方式可以為:將身份標識與TokenName作為緩存Key,并將Token作為該緩存Key對應的緩存Value進行保存。
[0085]標識發(fā)送模塊603將身份標識攜帶在當前網頁的Cookie中,并將當前網頁的Cookie發(fā)送至客戶端;并且,將Token和TokenName攜帶在當前網頁的信息中,并將當前網頁的信息發(fā)送至客戶端。
[0086]重復提交判斷模塊604還可以用于,當從網頁數據提交請求中無法獲取到身份標識、Token和TokenName中的任意一個時,向客戶端反饋數據提交失敗消息。
[0087]重復提交判斷模塊604還可以用于,當查找到標識保存模塊602中沒有保存該身份標識與TokenName的組合所對應的Token時,向客戶端反饋數據提交失敗消息;當判斷出從網頁數據提交請求中獲取的Token與查找到的Token不一致時,向所述客戶端反饋數據提交失敗消息;
[0088]刪除查找到的Token及其對應的身份標識與TokenName的組合之后,可以進一步判斷是否刪除成功,如果是,則向客戶端反饋數據提交成功消息;否則,向客戶端反饋數據提交失敗消息。
[0089]綜上可見,本發(fā)明提出的防止數據重復提交的方法和服務器,基于Cookie機制和緩存機制實現防止數據重復提交,將網頁的身份標識攜帶在Cookie中發(fā)送至客戶端,并將Token和TokenName攜帶在網頁信息中發(fā)送至客戶端;客戶端重復提交的判斷依據是:相同的身份標識、Token和TokenName重復提交,服務器處理兩次相同的請求時只有第一次刪除緩存成功,第二次請求則刪除失敗,從而達到防止數據重復提交的效果??梢姡景l(fā)明能夠不依賴于Session機制實現防止網頁數據的重復提交。
[0090]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內。
【權利要求】
1.一種防止數據重復提交的方法,其特征在于,所述方法包括: 生成當前網頁對應的身份標識、令牌Token和令牌名TokenName,保存所述身份標識與TokenName的組合與Token的對應關系;將所述身份標識、Token和TokenName發(fā)送至客戶端; 接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName ;查找是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,貝1J刪除所述查找到的Token及其對應的身份標識與TokenName的組合。
2.根據權利要求1所述的方法,其特征在于,所述生成當前網頁的身份標識的方式為: 判斷所述當前網頁的Cookie中是否保存有當前網頁對應的身份標識,如果沒有,則生成所述當前網頁對應的身份標識,并將所述身份標識保存在當前網頁的Cookie中。
3.根據權利要求1所述的方法,其特征在于,保存身份標識與TokenName的組合與Token的對應關系方式為: 將所述身份標識與TokenName作為緩存Key,并將Token作為該緩存Key對應的緩存Value進行保存。
4.根據權利要求1所述的方法,其特征在于,所述將身份標識、Token和TokenName發(fā)送至客戶端的方式為: 將所述身份標識攜帶在當前網頁的Cookie中,并將所述當前網頁的Cookie發(fā)送至客戶端; 將所述Token和TokenName攜帶在當前網頁的信息中,并將所述當前網頁的信息發(fā)送至客戶端。
5.根據權利要求1所述的方法,其特征在于,所述查找是否保存有該身份標識與TokenName的組合所對應的Token之前進一步包括: 如果從所述網頁數據提交請求中無法獲取到身份標識、Token和TokenName中的任意一個,則向所述客戶端反饋數據提交失敗消息。
6.根據權利要求1所述的方法,其特征在于,當查找到沒有保存該身份標識與TokenName的組合所對應的Token時,向所述客戶端反饋數據提交失敗消息; 當判斷出從網頁數據提交請求中獲取的Token與查找到的Token不一致時,向所述客戶端反饋數據提交失敗消息; 所述刪除查找到的Token及其對應的身份標識與TokenName的組合之后進一步包括:判斷是否刪除成功,如果是,則向所述客戶端反饋數據提交成功消息;否則,向所述客戶端反饋數據提交失敗消息。
7.一種防止數據重復提交的服務器,其特征在于,所述服務器包括: 標識生成模塊,用于生成當前網頁對應的身份標識、令牌Token和令牌名TokenName, 標識保存模塊,用于保存所述身份標識與TokenName的組合與Token的對應關系; 標識發(fā)送模塊,用于將所述身份標識、Token和TokenName發(fā)送至客戶端; 重復提交判斷模塊,用于接收來自客戶端的網頁數據提交請求,從所述網頁數據提交請求中獲取身份標識、Token和TokenName ;查找所述標識保存模塊中是否保存有該身份標識與TokenName的組合所對應的Token,如果是,則判斷所述從網頁數據提交請求中獲取的Token與查找到的Token是否一致,如果一致,則刪除所述查找到的Token及其對應的身份標識與TokenName的組合。
8.根據權利要求7所述的服務器,其特征在于,所述標識生成模塊判斷所述當前網頁的Cookie中是否保存有當前網頁對應的身份標識,如果沒有,則生成所述當前網頁對應的身份標識,并將所述身份標識保存在當前網頁的Cookie中。
9.根據權利要求7所述的服務器,其特征在于,標識保存模塊保存身份標識與TokenName的組合與Token的對應關系方式為:將所述身份標識與TokenName作為緩存Key,并將Token作為該緩存Key對應的緩存Value進行保存。
10.根據權利要求7所述的服務器,其特征在于,所述標識發(fā)送模塊將所述身份標識攜帶在當前網頁的Cookie中,并將所述當前網頁的Cookie發(fā)送至客戶端;將所述Token和TokenName攜帶在當前網頁的信息中,并將所述當前網頁的信息發(fā)送至客戶端。
11.根據權利要求7所述的服務器,其特征在于,所述重復提交判斷模塊還用于,當從所述網頁數據提交請求中無法獲取到身份標識、Token和TokenName中的任意一個時,向所述客戶端反饋數據提交失敗消息。
12.根據權利要求7所述的服務器,其特征在于,所述重復提交判斷模塊還用于,當查找到標識保存模塊中沒有保存該身份標識與TokenName的組合所對應的Token時,向所述客戶端反饋數據提交失敗消息;當判斷出從網頁數據提交請求中獲取的Token與查找到的Token不一致時,向所述客戶端反饋數據提交失敗消息; 所述重復提交判斷模塊還用于,刪除查找到的Token及其對應的身份標識與TokenName的組合之后,進一步判斷是否刪除成功,如果是,則向所述客戶端反饋數據提交成功消息;否則,向所 述客戶端反饋數據提交失敗消息。
【文檔編號】H04L29/08GK103841111SQ201410098056
【公開日】2014年6月4日 申請日期:2014年3月17日 優(yōu)先權日:2014年3月17日
【發(fā)明者】趙天明 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿易有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
新津县| 天台县| 吉木萨尔县| 徐水县| 巴南区| 易门县| 永宁县| 湄潭县| 广宁县| 芦溪县| 荆门市| 筠连县| 蛟河市| 民和| 天长市| 泰州市| 枣阳市| 南城县| 马边| 连平县| 泊头市| 陈巴尔虎旗| 武义县| 苍南县| 大洼县| 大连市| 谷城县| 合肥市| 洪泽县| 井陉县| 闽侯县| 库尔勒市| 林甸县| 湟源县| 安平县| 都匀市| 郁南县| 阿巴嘎旗| 五家渠市| 新沂市| 阜新|