前後端分離重複提交 防止表單重複提交(二)

2021-10-16 15:16:23 字數 1305 閱讀 9604

實現原理:

1、頁面和後台同步存入乙個token,一旦重新整理頁面,此token都是會重新整理的

2、提交表單時,會帶上這個標識token

3、請求後台,將此token和後台存入的token比對

3.1 校驗token通過,成功提交表單,並移除token

3.2 校驗token不通過,給出前端提示,但不做移除token

3.3 校驗token通過,但表單校驗不通過時,給出前端提示,但不做移除token

針對第一點,如果是頁面是jsp,可在**頁面時使用切面生成token並存入redis或者session等

如果是前後端分離型,也可在頁面統一生成token,生成時請求後台存入redis等。

在不考慮對接前端,本文先以**形式說明後端實現

一、切點,表示需要防重複提交的地方

* 防重複提交切點註解

* @author xingzi.qi

@target(elementtype.method)

@retention(retentionpolicy.runtime)

public @inte***ce latechtoken else

@afterreturning(value= "pointcut()",returning = "object")

public void afterreturning(joinpoint joinpoint,object object){

if(object instanceof messagebean){

messagebean messagebean = (messagebean)object;

//表單提交成功時,刪除redis裡的token

一點說明:

這裡會選擇切面和***結合,是因為最開始用***,無法拿到方法的返回值,無法判斷表單時成功提交與否,故加入了切面。

只用切面來實現,我就沒有再去嘗試了,如果有朋友們嘗試到更好更簡單的方式,歡迎曬出來

防止表單重複提交

新增乙個使用者時,發現重複新增了4 5個,原來是重複提交了。怎麼解決這個問題呢,起初是在後端檢查新增的屬性是否已有,例如姓名和手機號是否重複,如果重複就不儲存,沒想到後來隨著業務的複雜化,新增乙個使用者所需時間越來越長,以致在檢查時還沒插入完畢。那就在提交時就關閉form,可是這樣一來,如果後端檢查...

防止表單重複提交

防止表單重複提交 問題 什麼是表單重複提交?regist.jsp registservlet 表單重複提交 危害 刷票 重複註冊 帶來伺服器訪問壓力 拒絕服務 解決方案 在頁面上生成乙個令牌 就是乙個隨機字串 將其儲存到session中,並在表單中攜帶.在伺服器端,獲取資料時,也將令牌獲取,將它與s...

防止重複提交表單

public class refreshserve system.web.ui.page else 呈現前更新標識 protected override void onprerender eventargs e 更新標識,正常提交都刪除該次提交的時間,並生產當前新的時間 private void u...