最近工作中,因为重试按钮后台反应比较慢。用户一直点,我就一直提交到外部系统了。导致了一个重复提交问题。虽然不一定有用户这么做,但确实会有这样的问题。这个问题,我现在有两个思路:
一、加一个缓存。在提交之前,查询该id是否在缓存中。在就直接返回。不在,就允许提交,提交之前将id存入缓存。提交之后,就将该id从缓存中删除。这么做的场景能够在一个线程返回之前,不会重复提交的问题。但不能解决恶意提交的问题。
二、在传给前端的时候,加一个token,用令牌机制。主要是生成多个令牌了。这样,令牌一过来。直接删除。下次,再重复提交,就能解决这个问题。可以从根本上防止重复提交的问题。更有效。
我选择了第一种,因为开始并没有更好的思路。当时只有这一种方案,现在回想。应该采用第二种更好。下次引以为戒。