| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- declare (strict_types=1);
- namespace App\Service;
- /**
- * 验证码服务
- */
- class CaptchaService
- {
- /**
- * 生成验证码
- * @param $scene 场景
- * @param $dataType 返回类型:1-常用图片流对象,2-base图片地址(API接口使用)
- */
- public static function makeCode($scene='default', $dataType=1){
- $redis = $this->container->get(\Hyperf\Redis\Redis::class);
- $config = new \EasySwoole\VerifyCode\Conf();
- $code = new \EasySwoole\VerifyCode\VerifyCode($config);
- //系统验证码
- $result = $code->DrawCode();
- // 获取自定义配置
- $config = config('verify_code.'.$scene);
- $isNoise = isset($config['noise'])? $config['noise'] : false;
- if($isNoise){
- $result->setUseNoise();
- }
- $img_code = $result->getImageCode();
- //写入缓存 用于其他方法验证 并且设置过期时间
- $expire = isset($config['expire'])? intval($config['expire']) : 0;
- $redis->set("codes:{$scene}_".session_id(), $img_code, $expire? $expire : 180);
- // 返回类型
- if($dataType == 2){
- return ['url'=> $result->getImageBase64(), 'scene'=> $scene];
- }else{
- return $result->getImageByte();
- }
- }
- /**
- * 验证码校验
- */
- public static function checkCode($code, $scene='default'){
- $redis = $this->container->get(\Hyperf\Redis\Redis::class);
- $cacheCode = $redis->get("codes:{$scene}_".session_id());
- return $cacheCode == $code? true : false;
- }
- }
|