防止重复提交:后端Token机制实现详解及代码示例
为了防止重复提交,可以在后端实现一个Token机制,即每次提交请求时生成一个唯一的Token,并将其返回给前端,然后前端在下一次提交请求时需要携带该Token,在后端进行校验,如果校验通过则继续处理请求,否则拒绝重复提交。
下面是一个简单的后端实现代码示例,使用Java语言和Spring框架:
@RestController
public class ApiController {
private Map<String, Boolean> tokenMap = new ConcurrentHashMap<>();
@PostMapping("/submit")
public String submit(@RequestParam("token") String token) {
if (tokenMap.containsKey(token)) {
// 如果token已存在,说明重复提交
return "Duplicate submission";
}
// 标记token为已使用
tokenMap.put(token, true);
// 处理请求...
return "Success";
}
}
在上述代码中,tokenMap用于存储已使用的Token,使用ConcurrentHashMap保证线程安全。当收到提交请求时,首先判断tokenMap中是否已存在该Token,如果存在则说明是重复提交,直接返回'Duplicate submission';否则将该Token标记为已使用,并进行后续的请求处理。
前端在提交请求时,需要获取后端返回的Token,并携带在请求中,例如使用Ajax发送POST请求:
function submit() {
var token = generateToken(); // 生成Token
$.ajax({
type: "POST",
url: "/submit",
data: {
token: token
},
success: function(response) {
// 处理请求结果
console.log(response);
}
});
}
在上述代码中,generateToken函数用于生成唯一的Token,并将其携带在请求的参数中。
通过以上实现,可以有效防止重复提交。每次提交请求都需要先获取并使用新的Token,确保每次请求的Token都是唯一的。后端通过校验Token的方式判断是否是重复提交。
原文地址: http://www.cveoy.top/t/topic/qwVh 著作权归作者所有。请勿转载和采集!