对于这个问题,我一直都想不出很好的办法来。因为老板提出的需求是,在一天中,要防止同一个用户多次提交表单。
但是我有获取不到用户的IP,这方面实在想不出很好的办法。
希望大佬们走过路过能停留下来,分享下经验,小弟万分感激!
对于这个问题,我一直都想不出很好的办法来。因为老板提出的需求是,在一天中,要防止同一个用户多次提交表单。
但是我有获取不到用户的IP,这方面实在想不出很好的办法。
希望大佬们走过路过能停留下来,分享下经验,小弟万分感激!
结合redis来做,每提交一次表单,将当前的人信息写入cache,cache失效时间为当天,当天过后自动删除。
提交表单前的校验,先检验缓存中有无该用户,有的话证明已经提交过一次,不许再提交,没有证明没有提交过,或是已经不是当天,才可以继续提交。
纯前端是可以实现的,但是会被破解
方案是 表单提交第一次的时候, 在 cookie 或者 storage 里面存储一个键值用来记录填写时间,
再次提交或者进入表单页面的时候 判断当前时间和记录的时间是否在同一天
因为存储的值会被破解/删除,所以后端的判断才是最好的
纯前端并不行,不管你是使用 localStorage
还是 cookie
都可以人为清除,就算不能清楚换台设备同一账号就又能提交了。
只能让后端配合你去保存/验证已提交的状态。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
如果你提交的数据是一次提交一条记录,那么这个记录应该有个创建时间吧,用户提交表单的时候直接检验当日这个用户是否有提交过记录就好了。通不过,给前端一个信息,前端仅仅是需要给个提示就好了。