防止重复提交的代码片段
项目中防止用户在短时间内重复请求某个接口,尤其是一些敏感操作,像商城中用户购买产品,发生什么不可控的事情可是会丢饭碗的。
所以好的措施一样都不能少,粘一下方便使用的thinkphp项目用到的代码片段。
// 判断同一IP短时间重复请求
// 接口开始处来一段保命手段
$ipKey = '_REGISTER_IP_ARRAY_';
$ipArray = Cache::get($ipKey);
$ipArray = is_array($ipArray) ? $ipArray : [];
$ip = $this->request->ip();
if (!in_array($ip, $ipArray)) {
$ipArray[] = $ip;
Cache::set($ipKey, $ipArray, 3);
} else {
$this->error('请求重复');
}
// 继续小心翼翼。。。