一種防止數據重複提交的裝置及其方法與流程
2023-09-18 09:11:35 3

本發明涉及通信技術領域,更具體地說,涉及一種防止數據重複提交的裝置及其方法。
背景技術:
目前,在網際網路應用中,客戶端(app)和伺服器之間的數據交互都是採用伺服器暴露接口給客戶端進行調用來實現,在app向伺服器提交表單的時候,通常是通過用戶點擊提交數據的按鈕來觸發客戶端上的數據提交操作,但是該觸發方式通常會由於用戶點擊過快、網絡延遲、或者客戶端的卡頓而使得用戶誤判沒有提交成功而選擇再次提交,這就造成了數據的重複提交。
而現有的解決方式是在用戶點擊提交數據按鈕的時候,客戶端自動將按鈕禁用,或者將該客戶端的整個操作界面全部禁用,直到提交完畢後再將按鈕變為可用狀態。該方式在一定程度上降低了重複提交的現象,但是並不能完全避免,當在用戶操作頻率較為快速時,還是會出現數據重複提交,並且該直接禁用界面的方式導致了開發商的開發難度。
技術實現要素:
本發明提供了一種防止數據重複提交的裝置及其方法,以解決客戶端向伺服器提交數據的過程中會存在重複提交的技術問題。
為解決上述技術問題,本發明提供一種防止數據重複提交的裝置,包括:接收模塊、第一獲取模塊、籤名模塊、第一判斷模塊和提交模塊;
所述接收模塊用於接收客戶端下發的數據提交請求;
所述第一獲取模塊用於根據所述數據提交請求獲取所述客戶端中待提交的用戶數據;
所述籤名模塊用於對所述待提交的用戶數據進行籤名處理,生成第一籤名值;
所述第一判斷模塊用於判斷在數據緩存列表中是否存在與所述第一籤名值相同的籤名值;
所述提交模塊用於在所述數據緩存列表中存在與所述第一籤名值相同的籤名值時,拒絕所述客戶端請求提交的用戶數據。
進一步地,所述籤名模塊用於根據預設的數據提交格式對所述待提交的用戶數據進行格式轉換;根據籤名運算算法對所述轉換後的用戶數據進行籤名處理,生成第一籤名值。
進一步地,所述裝置還包括:第二獲取模塊,用於獲取所述客戶端的身份標識信息;
所述第一判斷模塊用於根據所述第一籤名值查詢所述數據緩存列表中是否存在相同的籤名值;若查詢所述數據緩存列表中存在相同的籤名值,則判斷所述身份標識信息與所述籤名值對應的身份識別信息是否一致;若判斷所述身份標識信息與所述籤名值對應的身份識別信息一致,則所述提交模塊拒絕所述客戶端請求提交的用戶數據。
進一步地,所述裝置還包括:第二判斷模塊,用於判斷查詢到的所述籤名值是否在有效期內,若所述籤名值的有效期已過,則所述提交模塊將所述第一籤名值更新至所述數據緩存列表中,並執行提交用戶數據的提交操作;若所述籤名值的有效期未過,則所述提交模塊拒絕所述客戶端請求提交的用戶數據。
進一步地,所述籤名模塊用於根據哈希運算算法對轉換後的用戶數據進行哈希運算,得到第一哈希值。
進一步地,本發明還提供了一種防止數據重複提交的方法,包括:
接收客戶端下發的數據提交請求;
根據所述數據提交請求獲取所述客戶端中待提交的用戶數據;
對所述待提交的用戶數據進行籤名處理,生成第一籤名值;
判斷在數據緩存列表中是否存在與所述第一籤名值相同的籤名值;
若在所述數據緩存列表中存在與所述第一籤名值相同的籤名值,則拒絕所述客戶端請求提交的用戶數據。
進一步地,所述對所述待提交的用戶數據進行籤名處理,生成第一籤名值包括:
根據預設的數據提交格式對所述待提交的用戶數據進行格式轉換;
根據籤名運算算法對所述轉換後的用戶數據進行籤名處理,生成第一籤名值。
進一步地,在所述對所述待提交的用戶數據進行籤名處理之前,還包括:獲取所述客戶端的身份標識信息;
所述判斷在數據緩存列表中是否存在於所述第一籤名值相同的籤名值包括:
根據所述第一籤名值查詢所述數據緩存列表中是否存在相同的籤名值;
若查詢所述數據緩存列表中存在相同的籤名值,則判斷所述身份標識信息與所述籤名值對應的身份識別信息是否一致;
若所述身份標識信息與所述籤名值對應的身份識別信息一致,則拒絕所述客戶端請求提交的用戶數據。
進一步地,在所述查詢所述數據緩存列表中存在相同的籤名值之後,還包括:判斷查詢到的所述籤名值是否在有效期內,若所述籤名值的有效期已過,則將所述第一籤名值更新至所述數據緩存列表中,並執行提交用戶數據的提交操作;若所述籤名值的有效期未過,則拒絕所述客戶端請求提交的用戶數據。
進一步地,所述根據籤名運算算法對轉換後的用戶數據進行籤名處理,得到第一籤名值包括:根據哈希運算算法對所述轉換後的用戶數據進行哈希運算,得到第一哈希值。
本發明的有益效果是:
本發明提供的防止數據重複提交的裝置及其方法,在接收到數據提交請求後,根據請求獲取對應的待提交的用戶數據,並對該用戶數據進行籤名,得到第一籤名值,然後判斷在數據緩存列表中是否存在與該第一籤名值相同的籤名值,若存在,則拒絕客戶端的數據提交請求;通過在提交數據的同時,對該需要提交的數據進行籤名,根據籤名判斷該數據是否已經被提交,若已提交,則拒絕請求,從而實現了防止數據重複提交的問題,提高了數據提交的效率。
附圖說明
下面將結合附圖及實施例對本發明作進一步說明,附圖中:
圖1為實現本發明各個實施例一個可選的移動終端的硬體結構示意圖。
圖2為實現本發明各個實施例一個可選的伺服器的結構示意圖。
圖3為本發明實施例一提供的防止數據重複提交的裝置的結構框圖。
圖4為本發明實施例二提供的防止數據重複提交的裝置的另一種結構框圖。
圖5為本發明實施例三提供的防止數據重複提交的方法的流程圖。
圖6為本發明實施例四提供的防止數據重複提交的方法的另一種流程圖。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
現在將參考附圖描述實現本發明各個實施例的移動終端。在後續的描述中,使用用於表示元件的諸如「模塊」、「部件」或「單元」的後綴僅為了有利於本發明的說明,其本身並沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。
移動終端可以以各種形式來實施。例如,本發明中描述的終端可以包括諸如行動電話、智慧型電話、筆記本電腦、數字廣播接收器、pda(個人數字助理)、pad(平板電腦)、pmp(可攜式多媒體播放器)、導航裝置等等的移動終端以及諸如數字tv、臺式計算機等等的固定終端。下面,假設本申請中的客戶端是移動終端,然而,本領域技術人員將理解的是,除了特別用於移動目的的元件之外,根據本發明的實施方式的構造也能夠應用於固定類型的終端。
圖1為實現本發明各個實施例一個可選的移動終端的硬體結構示意圖。
移動終端100可以包括無線通信單元110、輸入單元120、用戶輸入單元130、感測單元140、輸出單元150、存儲器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動終端,但是應理解的是,並不要求實施所有示出的組件,可以替代地實施更多或更少的組件,將在下面詳細描述移動終端的元件。
無線通信單元110通常包括一個或多個組件,其允許移動終端100與伺服器或網絡之間的無線電通信。例如,無線通信單元可以包括廣播接收模塊111、移動通信模塊112、無線網際網路模塊113中的至少一個。
廣播接收模塊111經由廣播信道從外部廣播管理伺服器接收廣播信號和/或廣播相關信息。廣播信道可以包括衛星信道和/或地面信道。廣播管理伺服器可以是生成並發送廣播信號和/或廣播相關信息的伺服器或者接收之前生成的廣播信號和/或廣播相關信息並且將其發送給終端的伺服器。廣播信號可以包括tv廣播信號、無線電廣播信號、數據廣播信號等等。而且,廣播信號可以進一步包括與tv或無線電廣播信號組合的廣播信號。廣播相關信息也可以經由移動通信網絡提供,並且在該情況下,廣播相關信息可以由移動通信模塊112來接收。廣播信號可以以各種形式存在,例如,其可以以數字多媒體廣播(dmb)的電子節目指南(epg)、數字視頻廣播手持(dvb-h)的電子服務指南(esg)等等的形式而存在。廣播接收模塊111可以通過使用各種類型的廣播系統接收信號廣播。特別地,廣播接收模塊111可以通過使用諸如多媒體廣播-地面(dmb-t)、數字多媒體廣播-衛星(dmb-s)、數字視頻廣播-手持(dvb-h),前向鏈路媒體(mediaflo@)的數據廣播系統、地面數字廣播綜合服務(isdb-t)等等的數字廣播系統接收數字廣播。廣播接收模塊111可以被構造為適合提供廣播信號的各種廣播系統以及上述數字廣播系統。經由廣播接收模塊111接收的廣播信號和/或廣播相關信息可以存儲在存儲器160(或者其它類型的存儲介質)中。
移動通信模塊112將無線電信號發送到基站(例如,接入點等等)、外部終端以及伺服器中的至少一個和/或從其接收無線電信號。這樣的無線電信號可以包括語音通話信號、視頻通話信號、或者根據文本和/或多媒體消息發送和/或接收的各種類型的網絡數據。
無線網際網路模塊113支持移動終端的無線網際網路接入。該模塊可以內部或外部地耦接到終端。該模塊所涉及的無線網際網路接入技術可以包括wlan(無線lan)(wi-fi)、wibro(無線寬帶)、wimax(全球微波互聯接入)、hsdpa(高速下行鏈路分組接入)等等。
在本發明中,當客戶端需要進行數據提交時,通過無線通信單元110向伺服器發送數據提交請求,並將需要提交的用戶數發送給伺服器,再由伺服器進行數據籤名處理,判斷該數據是否是重複提交的數據。
輸入單元120用於接收音頻或視頻信號。輸入單元120可以包括相機121和麥克風1220,相機121對在視頻捕獲模式或圖像捕獲模式中由圖像捕獲裝置獲得的靜態圖片或視頻的圖像數據進行處理。處理後的圖像幀可以顯示在顯示模塊151上。經相機121處理後的圖像幀可以存儲在存儲器160(或其它存儲介質)中或者經由無線通信單元110進行發送,可以根據移動終端的構造提供兩個或更多相機121。麥克風122可以在電話通話模式、記錄模式、語音識別模式等等運行模式中經由麥克風接收聲音(音頻數據),並且能夠將這樣的聲音處理為音頻數據。處理後的音頻(語音)數據可以在電話通話模式的情況下轉換為可經由移動通信模塊112發送到移動通信基站的格式輸出。麥克風122可以實施各種類型的噪聲消除(或抑制)算法以消除(或抑制)在接收和發送音頻信號的過程中產生的噪聲或者幹擾。
用戶輸入單元130可以根據用戶輸入的命令生成鍵輸入數據以控制移動終端的各種操作。用戶輸入單元130允許用戶輸入各種類型的信息,並且可以包括鍵盤、鍋仔片、觸摸板(例如,檢測由於被接觸而導致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖杆等等。特別地,當觸摸板以層的形式疊加在顯示模塊151上時,可以形成觸控螢幕。
在本發明中,所述待提交的用戶數據具體可以通過輸入單元120獲取,然後通過無線通信單元110發送給伺服器處理,也可以是移動終端100從網際網路上獲取到的網際網路數據。優選的,還可以是用戶通過用戶輸入單元130自行輸入的數據,例如文字、短息消息等
感測單元140檢測移動終端100的當前狀態,(例如,移動終端100的打開或關閉狀態)、移動終端100的位置、用戶對於移動終端100的接觸(即,觸摸輸入)的有無、移動終端100的取向、移動終端100的加速或減速移動和方向等等,並且生成用於控制移動終端100的操作的命令或信號。例如,當移動終端100實施為滑動型行動電話時,感測單元140可以感測該滑動型電話是打開還是關閉。另外,感測單元140能夠檢測電源單元190是否提供電力或者接口單元170是否與外部裝置耦接。感測單元140可以包括接近傳感器141。
接口單元170用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機埠、外部電源(或電池充電器)埠、有線或無線數據埠、存儲卡埠、用於連接具有識別模塊的裝置的埠、音頻輸入/輸出(i/o)埠、視頻i/o埠、耳機埠等等。識別模塊可以是存儲用於驗證用戶使用移動終端100的各種信息並且可以包括用戶識別模塊(uim)、客戶識別模塊(sim)、通用客戶識別模塊(usim)等等。另外,具有識別模塊的裝置(下面稱為"識別裝置")可以採取智慧卡的形式,因此,識別裝置可以經由埠或其它連接裝置與移動終端100連接。接口單元170可以用於接收來自外部裝置的輸入(例如,數據信息、電力等等)並且將接收到的輸入傳輸到移動終端100內的一個或多個元件或者可以用於在移動終端和外部裝置之間傳輸數據。
另外,當移動終端100與外部底座連接時,接口單元170可以用作允許通過其將電力從底座提供到移動終端100的路徑或者可以用作允許從底座輸入的各種命令信號通過其傳輸到移動終端的路徑。從底座輸入的各種命令信號或電力可以用作用於識別移動終端是否準確地安裝在底座上的信號。輸出單元150被構造為以視覺、音頻和/或觸覺方式提供輸出信號(例如,音頻信號、視頻信號、警報信號、振動信號等等)。
輸出單元150可以包括顯示模塊151、音頻輸出模塊152、警報模塊153等等。
顯示模塊151可以顯示在移動終端100中處理的信息。例如,當移動終端100處於電話通話模式時,顯示模塊151可以顯示與通話或其它通信(例如,文本消息收發、多媒體文件下載等等)相關的用戶界面(ui)或圖形用戶界面(gui)。當移動終端100處於視頻通話模式或者圖像捕獲模式時,顯示模塊151可以顯示捕獲的圖像和/或接收的圖像、示出視頻或圖像以及相關功能的ui或gui等等。
同時,當顯示模塊151和觸摸板以層的形式彼此疊加以形成觸控螢幕時,顯示模塊151可以用作輸入裝置和輸出裝置。顯示模塊151可以包括液晶顯示器(lcd)、薄膜電晶體lcd(tft-lcd)、有機發光二極體(oled)顯示器、柔性顯示器、三維(3d)顯示器等等中的至少一種。這些顯示器中的一些可以被構造為透明狀以允許用戶從外部觀看,這可以稱為透明顯示器,典型的透明顯示器可以例如為toled(透明有機發光二極體)顯示器等等。根據特定想要的實施方式,移動終端100可以包括兩個或更多顯示模塊(或其它顯示裝置),例如,移動終端可以包括外部顯示模塊(未示出)和內部顯示模塊(未示出)。觸控螢幕可用於檢測觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。
音頻輸出模塊152可以在移動終端處於呼叫信號接收模式、通話模式、記錄模式、語音識別模式、廣播接收模式等等模式下時,將無線通信單元110接收的或者在存儲器160中存儲的音頻數據轉換音頻信號並且輸出為聲音。而且,音頻輸出模塊152可以提供與移動終端100執行的特定功能相關的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等等)。音頻輸出模塊152可以包括揚聲器、蜂鳴器等等。
警報模塊153可以提供輸出以將事件的發生通知給移動終端100。典型的事件可以包括呼叫接收、消息接收、鍵信號輸入、觸摸輸入等等。除了音頻或視頻輸出之外,警報模塊153可以以不同的方式提供輸出以通知事件的發生。例如,警報模塊153可以以振動的形式提供輸出,當接收到呼叫、消息或一些其它進入通信(incomingcommunication)時,警報模塊153可以提供觸覺輸出(即,振動)以將其通知給用戶。通過提供這樣的觸覺輸出,即使在用戶的行動電話處於用戶的口袋中時,用戶也能夠識別出各種事件的發生。警報模塊153也可以經由顯示模塊151或音頻輸出模塊152提供通知事件的發生的輸出。
存儲器160可以存儲由控制器180執行的處理和控制操作的軟體程序等等,或者可以暫時地存儲己經輸出或將要輸出的數據(例如,電話簿、消息、靜態圖像、視頻等等)。而且,存儲器160可以存儲關於當觸摸施加到觸控螢幕時輸出的各種方式的振動和音頻信號的數據。
存儲器160可以包括至少一種類型的存儲介質,所述存儲介質包括快閃記憶體、硬碟、多媒體卡、卡型存儲器(例如,sd或dx存儲器等等)、隨機訪問存儲器(ram)、靜態隨機訪問存儲器(sram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、可編程只讀存儲器(prom)、磁性存儲器、磁碟、光碟等等。而且,移動終端100可以與通過網絡連接執行存儲器160的存儲功能的網絡存儲裝置協作。
控制器180通常控制移動終端的總體操作。例如,控制器180執行與語音通話、數據通信、視頻通話等等相關的控制和處理。另外,控制器180可以包括用於再現(或回放)多媒體數據的多媒體模塊181,多媒體模塊181可以構造在控制器180內,或者可以構造為與控制器180分離。控制器180可以執行模式識別處理,以將在觸控螢幕上執行的手寫輸入或者圖片繪製輸入識別為字符或圖像。
電源單元190在控制器180的控制下接收外部電力或內部電力並且提供操作各元件和組件所需的適當的電力。
這裡描述的各種實施方式可以以使用例如計算機軟體、硬體或其任何組合的計算機可讀介質來實施。對於硬體實施,這裡描述的實施方式可以通過使用特定用途集成電路(asic)、數位訊號處理器(dsp)、數位訊號處理裝置(dspd)、可編程邏輯裝置(pld)、現場可編程門陣列(fpga)、處理器、控制器、微控制器、微處理器、被設計為執行這裡描述的功能的電子單元中的至少一種來實施,在一些情況下,這樣的實施方式可以在控制器180中實施。對於軟體實施,諸如過程或功能的實施方式可以與允許執行至少一種功能或操作的單獨的軟體模塊來實施。軟體代碼可以由以任何適當的程式語言編寫的軟體應用程式(或程序)來實施,軟體代碼可以存儲在存儲器160中並且由控制器180執行。
至此,己經按照其功能描述了移動終端。下面,為了簡要起見,將描述諸如摺疊型、直板型、擺動型、滑動型移動終端等等的各種類型的移動終端中的滑動型移動終端作為示例。因此,本發明能夠應用於任何類型的移動終端,並且不限於滑動型移動終端。
如圖2所示,為實現本發明各個實施例一個可選的伺服器的結構示意圖,該伺服器至少包括:輸入輸出(io)總線21、處理器22、存儲器23、內存24和通信裝置25。其中,
輸入輸出(io)總線21分別與自身所屬的伺服器的其它部件(處理器22、存儲器23、內存24和通信裝置25)連接,並且為其它部件提供傳送線路。
處理器22通常控制自身所屬的伺服器的總體操作。例如,處理器22執行計算和確認等操作。其中,處理器22可以是中央處理器(cpu)。
存儲器23存儲處理器可讀、處理器可執行的軟體代碼,其包含用於控制處理器22執行本文描述的功能的指令(即軟體執行功能)。
內存24,一般採用半導體存儲單元,包括隨機存儲器(ram),只讀存儲器(rom),以及高速緩存(cache),ram是其中最重要的存儲器。內存24是計算機中重要的部件之一,它是與cpu22進行溝通的橋梁,計算機中所有程序的運行都是在內存中進行的,其作用是用於暫時存放cpu22中的運算數據,以及與硬碟等外部存儲器交換的數據,只要計算機在運行中,cpu22就會把需要運算的數據調到內存中進行運算,當運算完成後cpu22再將結果傳送出來,內存的運行也決定了計算機的穩定運行。
通信裝置25,通常包括一個或多個組件,其允許自身所屬的伺服器與無線通信系統或網絡之間的無線電通信。
其中,本發明提供的防止數據重複提交的裝置中的各模塊可以通過上述的伺服器來實現,其處理過程為通過通信模塊25接收移動終端100發送的數據提交請求以及待提交的用戶數據,處理器22對用戶數據進行籤名處理,得到第一籤名值,根據該第一籤名值查詢內存24中是否存在相同的籤名值,若存在,則處理器22直接拒絕移動終端100的數據提交請求。
進一步地,本發明提供的防止數據重複提交的裝置中各模塊所實現的功能,還可以通過軟體代碼來實現,其實現具體是將接收模塊、第一獲取模塊、第二獲取模塊、籤名模塊、第一判斷模塊、第二判斷模塊和提交模塊的功能實現的軟體代碼可存儲在存儲器23中,並由處理器22執行或編譯後執行。
以下通過具體實施例進行詳細說明。
實施例一:
參照圖3,圖3為本發明實施例一提供的防止數據重複提交的裝置的結構框圖,該裝置是基於上述現有的伺服器硬體結構所提出的一種能實現防止數據重複提交的方案,具體的,本實施例提供的防止數據重複提交的裝置包括:接收模塊31、第一獲取模塊32、籤名模塊33、第一判斷模塊34和提交模塊35,其中:
接收模塊31用於接收客戶端下發的數據提交請求,該數據提交請求用於從客戶端中獲取對應的待提交的用戶數據。
第一獲取模塊32用於對根據所述數據提交請求獲取所述客戶端中待提交的用戶數據。
籤名模塊33用於對所述待提交的用戶數據進行籤名處理,生成第一籤名值。
第一判斷模塊34用於判斷在所述數據緩存列表中是否存在與所述第一籤名值相同的籤名值。
若存在,則提交模塊35拒絕所述客戶端請求提交的用戶數據。
在本實施例中,還包括:當第一判斷模塊34的判斷結果為在數據緩存列表中不存在相同的籤名值時,則提交模塊35接收客戶端的數據提交請求,並執行對應的數據提交操作,同時還將通過籤名模塊33籤名得到的第一籤名值和對應的客戶端的身份標識信息存儲到數據緩存列表中。
在本實施例中,所述籤名模塊33在對待提交的用戶數據進行籤名處理時,具體包括:首先將從客戶端中獲取到的用戶數據進行格式的轉換,優選的,根據預設的數據提交格式進行轉換,例如,數據提交的格式為一串按時間順序排序的字符串,而籤名模塊33在進行籤名之前,要將接收到的所有用戶數據根據接收的時間順序進行排序,然後按照排序的順序串聯起來,得到一個字符串,該字符串的格式為「數據名稱1+數據內容1+數據名稱2+數據內容2……」的形式,最後籤名模塊33根據轉換後的用戶數據(即是得到字符串)進行籤名處理,得到第一籤名值,該第一籤名值可以是一個數字,也可以是一串字符串。第一判斷模塊34根據該第一籤名值判斷客戶端請求提交的用戶數據是否已被提交,若是,則拒絕提交請求,若否,則執行數據提交操作,並將第一籤名值緩存至數據緩存列表中。
為了進一步地提高判斷是否重複提交的準確率,在本實施例中,所述裝置還包括對需要提交數據的客戶端的身份標識信息進行比對,若判斷存在相同的籤名值的同時,其身份標識信息也相同的情況下,判定該客戶端提交的用戶數據在此之前已提交過了,若籤名值和身份標識信息中存在一者不同,則判定該提交的用戶數據不是重複的數據。
在實際應用中,本實施例提供的防止數據重複提交的裝置具體是通過根據數據提交請求獲取客戶端中待提交的用戶數據以及該客戶端的身份標識信息,對該獲取到的用戶數據進行籤名處理,得到第一籤名值,然後根據該第一籤名值在數據緩存列表中查詢是否存在相同的籤名值,若存在,則獲取該籤名值對應的身份識別信息,並將比較該身份識別信息與客戶端的身份標識信息是否一致,若一致,則通知提交模塊35拒絕該客戶端發送的數據提交請求,若不一致,則提交模塊35接收客戶端請求提交的用戶數據,並執行對應的數據提交操作。
在本實施例中,在查詢所述數據緩存列表中存在相同的籤名值之後,還包括:判斷所述查詢到的籤名值是否還在有效期內,由於客戶端的用戶數據會不斷地隨著時間的增加而增加,比如其數據的刷新時間為15秒,那麼在該15秒內客戶端中的用戶數據是不會增加,而15秒之後有可能會發生變化,所以當客戶端在15秒的時間內進行多次的數據提交時,就會被認為是重複提交,因此,為了避免該種誤操作,本實施例還為數據緩存列表中的籤名值設置一個有效時間,例如15秒,在該15秒內查詢出的相同的籤名值是有效的。
當判斷所述籤名值的有效期已過,則將所述第一籤名值更新至所述數據緩存列表中,並執行提交用戶數據的提交操作。
當判斷所述籤名值的有效期未過,則拒絕所述客戶端請求提交的用戶數據。
在實際應用中,在所述數據緩存列表中存儲籤名值時,具體還包括存儲客戶端的身份標識信息,並將籤名值和身份標識信息一起打包存儲,優選的,可以按照「籤名值+身份標識信息」的格式進行存儲。
在本發明提供的實施例中,所述裝置在對待提交的用戶數據進行籤名處理時,具體可以通過特定的籤名運算算法進行籤名,例如,哈希運算算法,根據哈希運算算法對所述轉換後的用戶數據進行哈希運算,得到第一哈希值,根據該哈希值查詢在數據緩存列表中是否存在相同的哈希值,最後根據查詢結果對該數據提交請求進行處理。
在實際應用中,對於籤名處理的籤名運算算法,只要使得計算出來的值是唯一的不可逆的均可以。
本實施例提供的防止數據重複提交的裝置,通過設置籤名模塊對客戶端提交的用戶數據進行籤名處理,得到一個籤名值,並根據該籤名值判斷出該用戶數據是否已經提交過了,從而實現了防止數據重複提交的問題,提高了數據提交的效率。
進一步地,本實施例還設定了籤名值的有效期,只有在預設時間段內查詢到的籤名值才能作為重複提交的判斷依據,本發明利用時間進行請求重複提交的判定,不僅解決了重複提交數據的問題,還解決了提交數據處理裝置拓展性差的問題,進而達到了既能夠防止請求重複提交,又能夠提高裝置拓展性以及數據的處理效率。
實施例二:
參照圖4,圖4為本發明實施例二提供的防止數據重複提交的裝置的結構框圖,本實施例提供的裝置包括:接收模塊31、第一獲取模塊32、籤名模塊33、第一判斷模塊34和提交模塊35,其中:
接收模塊31用於接收客戶端下發的數據提交請求,該數據提交請求用於從客戶端中獲取對應的待提交的用戶數據。
第一獲取模塊32用於對根據所述數據提交請求獲取所述客戶端中待提交的用戶數據。
籤名模塊33用於對所述待提交的用戶數據進行籤名處理,生成第一籤名值。
第一判斷模塊34用於判斷在所述數據緩存列表中是否存在與所述第一籤名值相同的籤名值。
若存在,則提交模塊35拒絕所述客戶端請求提交的用戶數據。
在本實施例中,還包括:當第一判斷模塊34的判斷結果為在數據緩存列表中不存在相同的籤名值時,則提交模塊35接收客戶端的數據提交請求,並執行對應的數據提交操作,同時還將通過籤名模塊33籤名得到的第一籤名值和對應的客戶端的身份標識信息存儲到數據緩存列表中。
在實際應用中,在所述數據緩存列表中存儲籤名值時,具體還包括存儲客戶端的身份標識信息,並將籤名值和身份標識信息一起打包存儲,優選的,可以按照「籤名值+身份標識信息」的格式進行存儲。
在本實施例中,所述籤名模塊33對所述待提交的用戶數據進行籤名處理,生成第一籤名值具體是通過以下方式實現:
根據預設的數據提交格式對所述待提交的用戶數據進行格式轉換;
根據籤名運算算法對所述轉換後的用戶數據進行籤名處理,生成第一籤名值。
在實際應用中,數據提交的格式可以理解為是一串按時間順序排序的字符串,而籤名模塊33根據預設的數據提交格式對所述待提交的用戶數據進行格式轉換即是將接收到的所有用戶數據根據接收的時間順序進行排序,然後按照排序的順序串聯起來,得到一個字符串,例如得到的字符串的格式為「數據名稱1+數據內容1+數據名稱2+數據內容2……」的形式,最後籤名模塊33根據轉換後的用戶數據(即是得到字符串)進行籤名處理,得到第一籤名值,該第一籤名值可以是一個數字,也可以是一串字符串。
進一步地,該籤名模塊33在對所述字符串進行籤名處理時,具體可以通過特定的籤名運算算法進行籤名,例如:哈希運算算法,根據哈希運算算法對所述字符串進行哈希運算,得到第一哈希值,根據該第一哈希值查詢在數據緩存列表中是否存在相同的哈希值,最後根據查詢結果對該數據提交請求進行處理。
在實際應用中,對於籤名處理的籤名運算算法,只要使得計算出來的值是唯一的不可逆的均可以。
在本實施例中,所述裝置除了對籤名值進行判斷之外,還包括:對需要提交數據的客戶端的身份標識信息進行比對,若判斷存在相同的籤名值的同時,其身份標識信息也相同的情況下,判定該客戶端提交的用戶數據在此之前已提交過了,若籤名值和身份標識信息中存在一者不同,則判定該提交的用戶數據不是重複的數據。
具體的所述裝置還包括:第二獲取模塊36,用於獲取所述客戶端的身份標識信息;
所述第一判斷模塊34用於根據所述第一籤名值查詢所述數據緩存列表中是否存在相同的籤名值;若查詢所述數據緩存列表中存在相同的籤名值,則判斷所述身份標識信息與所述籤名值對應的身份識別信息是否一致;若所述身份標識信息與所述籤名值對應的身份識別信息一致,則所述提交模塊35拒絕所述客戶端請求提交的用戶數據。若不一致,則執行提交用戶數據的提交操作。
在實際應用中,本實施例提供的防止數據重複提交的裝置具體是通過根據數據提交請求獲取客戶端中待提交的用戶數據以及該客戶端的身份標識信息,對該獲取到的用戶數據進行籤名處理,得到第一籤名值,然後第一判斷模塊34根據該第一籤名值在數據緩存列表中查詢是否存在相同的籤名值,若存在,則獲取該籤名值對應的身份識別信息,並將比較該身份識別信息與客戶端的身份標識信息是否一致,若一致,則通知提交模塊35拒絕該客戶端發送的數據提交請求,若不一致,則提交模塊35接收客戶端請求提交的用戶數據,並執行對應的數據提交操作。
在實際應用中,由於客戶端的用戶數據會不斷地隨著時間的增加而增加,比如其數據的刷新時間為15秒,那麼在該15秒內客戶端中的用戶數據是不會增加,而15秒之後有可能會發生變化,所以當客戶端在15秒的時間內進行多次的數據提交時,就會被認為是重複提交,因此,為了避免該種誤操作,本實施例還為數據緩存列表中的籤名值設置一個有效時間,例如15秒,在該15秒內查詢出的相同的籤名值是有效的。
對此,本實施例提供的裝置還包括:第二判斷模塊37,用於判斷查詢到的所述籤名值是否在有效期內,若所述籤名值的有效期已過,則所述提交模塊35將所述第一籤名值更新至所述數據緩存列表中,並執行提交用戶數據的提交操作;若所述籤名值的有效期未過,則所述提交模塊35拒絕所述客戶端請求提交的用戶數據。
在實際應用中,所述防止數據重複提交的裝置中的各模塊可以通過圖2中的伺服器來實現,其中,所述接收模塊31、第一獲取模塊32和第二獲取模塊36採用通信裝置25來實現,所述籤名模塊33、第一判斷模塊34、提交模塊35和第二判斷模塊37採用處理器22實現,具體步驟為:所述通信裝置25用於接收客戶端下發的數據提交請求,根據所述數據提交請求獲取所述客戶端中待提交的用戶數據;所述處理器22用於對所述待提交的用戶數據進行籤名處理,生成第一籤名值,並判斷在數據緩存列表中是否存在與所述第一籤名值相同的籤名值,若在所述數據緩存列表中存在與所述第一籤名值相同的籤名值,則拒絕所述客戶端請求提交的用戶數據。
在本實施例中,所述處理器25在對所述待提交的用戶數據進行籤名處理時,具體是根據預設的數據提交格式對所述待提交的用戶數據進行格式轉換,根據籤名運算算法對所述轉換後的用戶數據進行籤名處理,生成第一籤名值,優選的,所述籤名運算算法為哈希運算算法。
所述通信裝置25還用於獲取所述客戶端的身份標識信息;所述處理器22根據所述第一籤名值查詢所述數據緩存列表中是否存在相同的籤名值;若查詢所述數據緩存列表中存在相同的籤名值,則判斷所述身份標識信息與所述籤名值對應的身份識別信息是否一致;若所述身份標識信息與所述籤名值對應的身份識別信息一致,則拒絕所述客戶端請求提交的用戶數據。
所述處理器22還用於判斷查詢到的所述籤名值是否在有效期內,若所述籤名值的有效期已過,則將所述第一籤名值更新至所述數據緩存列表中,並執行提交用戶數據的提交操作;若所述籤名值的有效期未過,則拒絕所述客戶端請求提交的用戶數據。
本實施例提供的防止數據重複提交的裝置,通過設置籤名模塊對客戶端提交的用戶數據進行籤名處理,得到一個籤名值,並根據該籤名值判斷出該用戶數據是否已經提交過了,從而實現了防止數據重複提交的問題,提高了數據提交的效率。另外,該裝置還設定了籤名值的有效期,只有在預設時間段內查詢到的籤名值才能作為重複提交的判斷依據,本發明利用時間進行請求重複提交的判定,不僅解決了重複提交數據的問題,還解決了提交數據處理裝置拓展性差的問題,進而達到了既能夠防止請求重複提交,又能夠提高裝置拓展性以及數據的處理效率。
第三實施例:
參照圖5,圖5為本發明實施例三提供的防止數據重複提交的方法的流程圖,該方法是基於上述現有的伺服器硬體結構所提出的一種能實現防止數據重複提交的方案,具體的,本實施提供的防止數據重複提交的方法具體包括如下步驟:
s501,接收客戶端下發的數據提交請求,該數據提交請求用於從客戶端中獲取對應的待提交的用戶數據。
s502,根據所述數據提交請求獲取所述客戶端中待提交的用戶數據。
在實際應用中,伺服器在接收到客戶端發送的過來的數據提交請求後,從請求中獲取客戶端的地址信息,並根據地址信息定位到對應的客戶端,並從客戶端中下載客戶端中待提交的用戶數據,該用戶數據包括用戶通過客戶端的輸入單元輸入的文字信息、拍攝的照片、錄製的視頻或音頻,甚至還可以是客戶端中網際網路中下載的網絡信息等等。
s503,對所述待提交的用戶數據進行籤名處理,生成第一籤名值。
在本實施例中,伺服器對獲取到的待提交的用戶數據進行籤名處理具體時根據預設的數據提交格式對待提交的用戶數據進行格式的轉換,根據籤名運算蘇納法對所述轉換後的用戶數據進行籤名處理,生成第一籤名值。
在實際應用中,該數據提交的格式可以理解為是一串按時間順序排序的字符串,而根據預設的數據提交格式對所述待提交的用戶數據進行格式轉換即是將接收到的所有用戶數據根據接收的時間順序進行排序,然後按照排序的順序串聯起來,得到一個字符串,例如得到的字符串的格式為「數據名稱1+數據內容1+數據名稱2+數據內容2……」的形式,最後根據轉換後的用戶數據(即是得到字符串)進行籤名處理,得到第一籤名值,該第一籤名值可以是一個數字,也可以是一串字符串。
具體的所述籤名運算算法為哈希運算算法,根據哈希運算算法對所述字符串進行哈希運算,得到第一哈希值,根據該第一哈希值查詢在數據緩存列表中是否存在相同的哈希值,最後根據查詢結果對該數據提交請求進行處理。
在實際應用中,對於籤名處理的籤名運算算法,只要使得計算出來的值是唯一的不可逆的均可以。
s504,判斷在數據緩存列表中是否存在與所述第一籤名值相同的籤名值。
在實際應用中,根據哈希運算得到的第一哈希值查詢伺服器中的數據緩存列表中是否存在相同的哈希值,若存在,則說明客戶端本次請求的數據提交已在之前有提交了,並拒絕本次的數據提交請求。
s505,若在所述數據緩存列表中存在與所述第一籤名值相同的籤名值,則拒絕所述客戶端請求提交的用戶數據。
在本實施例中,所述防止數據重複提交的方法除了對籤名值進行判斷之外,還包括:對需要提交數據的客戶端的身份標識信息進行比對,若判斷存在相同的籤名值的同時,其身份標識信息也相同的情況下,判定該客戶端提交的用戶數據在此之前已提交過了,若籤名值和身份標識信息中存在一者不同,則判定該提交的用戶數據不是重複的數據。
所述方法還包括:獲取所述客戶端的身份標識信息;
根據所述第一籤名值查詢所述數據緩存列表中是否存在相同的籤名值;
若查詢所述數據緩存列表中存在相同的籤名值,則判斷所述身份標識信息與所述籤名值對應的身份識別信息是否一致;
若所述身份標識信息與所述籤名值對應的身份識別信息一致,則拒絕所述客戶端請求提交的用戶數據。
在實際應用中,其提交數據的具體步驟包括:根據數據提交請求獲取客戶端中待提交的用戶數據以及該客戶端的身份標識信息,對該獲取到的用戶數據進行籤名處理,得到第一籤名值,然後根據該第一籤名值在數據緩存列表中查詢是否存在相同的籤名值,若存在,則獲取該籤名值對應的身份識別信息,並將比較該身份識別信息與客戶端的身份標識信息是否一致,若一致,則拒絕該客戶端發送的數據提交請求,若不一致,則接收客戶端請求提交的用戶數據,並執行對應的數據提交操作。
在實際應用中,由於客戶端的用戶數據會不斷地隨著時間的增加而增加,比如其數據的刷新時間為15秒,那麼在該15秒內客戶端中的用戶數據是不會增加,而15秒之後有可能會發生變化,所以當客戶端在15秒的時間內進行多次的數據提交時,就會被認為是重複提交,因此,為了避免該種誤操作,本實施例還為數據緩存列表中的籤名值設置一個有效時間,例如15秒,在該15秒內查詢出的相同的籤名值是有效的。
因此,在本實施例中,在所述查詢所述數據緩存列表中存在相同的籤名值之後,還包括:判斷查詢到的所述籤名值是否在有效期內,若所述籤名值的有效期已過,則將所述第一籤名值更新至所述數據緩存列表中,並執行提交用戶數據的提交操作;若所述籤名值的有效期未過,則拒絕所述客戶端請求提交的用戶數據。
本實施例提供的防止數據重複提交的方法,通過接收客戶端下發的數據提交請求,根據所述數據提交請求獲取所述客戶端中待提交的用戶數據,對所述待提交的用戶數據進行籤名處理,生成第一籤名值,判斷在數據緩存列表中是否存在與所述第一籤名值相同的籤名值,若在所述數據緩存列表中存在與所述第一籤名值相同的籤名值,則拒絕所述客戶端請求提交的用戶數據;通過在提交數據的同時,對該需要提交的數據進行籤名,根據籤名判斷該數據是否已經被提交,若已提交,則拒絕請求,從而實現了防止數據重複提交的問題,提高了數據提交的效率。
另外,本實施例提供的防止數據重複提交的方法還設定了籤名值的有效期,只有在預設時間段內查詢到的籤名值才能作為重複提交的判斷依據,本發明利用時間進行請求重複提交的判定,不僅解決了重複提交數據的問題,還解決了提交數據處理裝置拓展性差的問題,進而達到了既能夠防止請求重複提交,又能夠提高裝置拓展性以及數據的處理效率。
實施例三:
參照圖6,圖6為本發明實施例三提供的防止數據重複提交的方法的流程圖,該方法結合圖1和2中提供的移動終端和伺服器的結構提出的方案,其具體的處理流程如下:
s601,移動終端向伺服器發起第一次請求。
伺服器在接收到移動終端的提交請求後,對移動終端提交的用戶數據進行籤名。採用的算法是將移動終端提交的用戶數據以(數據名1數據內容1數據名2數據內容2……)的形式拼接成一個字符串,然後用籤名運算算法,具體是用sha1對拼接後的字符串進行hash運算得出一個值。
s602,將籤名值存儲到伺服器的數據緩存列表中。
伺服器根據步驟s601計算出的籤名值存儲到數據緩存列表中,所述籤名值在數據緩存列表中的數據結構為key-value形式,其中,key表示籤名值,value表示用戶的身份標識信息,預設該籤名值在數據緩存列表中的有效時間為15秒,當該值存儲時間超過15秒後,將會被伺服器自動清除,並將新的籤名值更新到對應的位置中。
s603,移動終端再次向伺服器發送數據提交請求。
s604,判斷該數據提交請求的請求時間是否在籤名值的有效時間內。
s605,若在有效時間內,則查詢是否存在相同的籤名值。
在本實施例中,若判斷的結果是在有效時間內,伺服器接收到的請求後,其重複執行步驟s601的操作,得到該次請求的籤名值,根據該籤名值在數據緩存列表中通過進行key的查找,如果找到與該籤名值對應的key,則進一步地校驗value值是否和該請求數據提交的用戶的身份標識信息一致,若一致,則說明該次請求為重複請求,伺服器通知移動終端拒絕該數據提交請求;若不一致則,進行正常的業務操作,並將該籤名值和對應的移動終端的身份標識信息更新到數據緩存列表中。
s606,若不在有效期內,則執行進行正常的業務操作。
在本實施例中,若判斷的結果為不在有效時間內,伺服器接收到的請求後,其重複執行步驟s601的操作,得到該次請求的籤名值,根據該籤名值在數據緩存列表中通過進行key的查找,在數據緩存列表中找不到與該籤名值對應的key,伺服器執行進行正常的業務操作,並將該籤名值和對應的移動終端的身份標識信息更新到數據緩存列表中。
本發明提供的防止數據重複提交的裝置及其方法,通過設置籤名模塊對客戶端提交的用戶數據進行籤名處理,得到一個籤名值,並根據該籤名值判斷出該用戶數據是否已經提交過了,從而實現了防止數據重複提交的問題,提高了數據提交的效率。
進一步地,本實施例還設定了籤名值的有效期,只有在預設時間段內查詢到的籤名值才能作為重複提交的判斷依據,本發明利用時間進行請求重複提交的判定,不僅解決了重複提交數據的問題,還解決了提交數據處理裝置拓展性差的問題,進而達到了既能夠防止請求重複提交,又能夠提高裝置拓展性以及數據的處理效率。
需要說明的是,在本文中,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質(如rom/ram、磁碟、光碟)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,伺服器,空調器,或者網絡設備等)執行本發明各個實施例所述的方法。
上面結合附圖對本發明的實施例進行了描述,但是本發明並不局限於上述的具體實施方式,上述的具體實施方式僅僅是示意性的,而不是限制性的,本領域的普通技術人員在本發明的啟示下,在不脫離本發明宗旨和權利要求所保護的範圍情況下,還可做出很多形式,這些均屬於本發明的保護之內。