前端如何实现一个用户只能提交一次表单!!!

对于这个问题,我一直都想不出很好的办法来。因为老板提出的需求是,在一天中,要防止同一个用户多次提交表单。
但是我有获取不到用户的IP,这方面实在想不出很好的办法。
希望大佬们走过路过能停留下来,分享下经验,小弟万分感激!

阅读 5.6k
6 个回答

如果你提交的数据是一次提交一条记录,那么这个记录应该有个创建时间吧,用户提交表单的时候直接检验当日这个用户是否有提交过记录就好了。通不过,给前端一个信息,前端仅仅是需要给个提示就好了。

结合redis来做,每提交一次表单,将当前的人信息写入cache,cache失效时间为当天,当天过后自动删除。

提交表单前的校验,先检验缓存中有无该用户,有的话证明已经提交过一次,不许再提交,没有证明没有提交过,或是已经不是当天,才可以继续提交。

cookies和localStorage都不能用?

这里顺便说一句,ip可以通过第三方接口获得或者自己后端提供。即使前端限制了,后端才是根本保障。

纯前端是可以实现的,但是会被破解
方案是 表单提交第一次的时候, 在 cookie 或者 storage 里面存储一个键值用来记录填写时间,
再次提交或者进入表单页面的时候 判断当前时间和记录的时间是否在同一天

因为存储的值会被破解/删除,所以后端的判断才是最好的

纯前端并不行,不管你是使用 localStorage 还是 cookie 都可以人为清除,就算不能清楚换台设备同一账号就又能提交了。
只能让后端配合你去保存/验证已提交的状态。

前端无法实现,必须是后端数据库记录用户操作记录,并限制提交次数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题