你好,最好在客户端加一个验证码功能来阻止机器人。

用户每查询一次就加入验证码,用户体验很不好吧。微信也提供根据电话号码来查询已注册用户,它也没有用验证码呀。我的思路能否限制每个用户调用该函数次数。但不知后台如何记录这个次数。
我在google查询时,如果查询过于频繁,它会提示,然后这时候才弹出输入验证码框,这个方式比较合理。但你们这个系统如何实现,有否demo。

你好,有很多种方案实现这个需求,我举一个例子。

如果你只允许登录用户查询的话,可以在 _User 中用 2 个隐藏字段(不允许客户端修改)分别记录「当天查询次数」和「上次查询的日期」,每次用户查询时,检查 「上次查询的日期」,如果是今天的话把「当天查询次数」加一然后判断是否符合限制;不是今天的话就设置成今天并且重置「当天查询次数」为 1.

这个方案在并发较高的情况下可能会有有问题,不过对于一般的应用应该够用了,更好的方案是用 LeanCache(即将上线的 Redis 缓存服务)来做原子操作。

首先这个接口最好是只有注册用户才能调用(和微信等应用一样)。你可以在用户信息的数据表里记录这个用户最后一次调用这个接口的时间戳,每次调用时检查一下是不是间隔了足够长的时间。