| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- namespace App\Module\Ulogic\Validator;
- use UCore\Validator;
- /**
- * 用户redis,请求限制
- *
- */
- class URLimitValidator extends Validator
- {
- public function validate(mixed $value, array $data): bool
- {
- $validation_class = get_class($this->validation);
- $s = $this->args['s'] ?? 2;
- $res = self::check($value,$validation_class, $s);
- if (!$res) {
- $this->validation->addError('', '请求频率过快,' . $s . '秒1次');
- }
- return $res;
- }
- /**
- * 限流检查
- * @param $user_id
- * @param $validation_class
- * @param $s
- * @return bool
- */
- public static function check($user_id,$validation_class,$s)
- {
- $key = "user-redislimit-$validation_class-$user_id-$s";
- $old = \Illuminate\Support\Facades\Cache::increment($key,1);
- \Illuminate\Support\Facades\Cache::set($key,$old,$s);
- if($old === 1){
- return true;
- }
- return false;
- }
- }
|