资讯专栏INFORMATION COLUMN

网易云易盾验证码

davidac / 2549人阅读

摘要:之前用的图形验证码,现在改用网易云滑动验证码,效果如下这里基于来实现校验验证码易盾验证码二次校验构造函数验证码密钥对密钥对发起二次校验请求二次校验数据用户信息公共参数计算参数签名密钥对请求参数参数排序发送请求请求参数新建

之前用的图形验证码,现在改用网易云滑动验证码,效果如下 这里基于 laravel 来实现

校验验证码
vi AppServicesCaptchaVerifier.php
captcha_id  = $captcha_id;
        $this->secret_id = $secret_id;
        $this->secret_key = $secret_key;
    }

    /**
     * 发起二次校验请求
     * @param $validate 二次校验数据
     * @param $user 用户信息
     */
    public function verify($validate, $user = "") {
        $params = array();
        $params["captchaId"] = $this->captcha_id;
        $params["validate"] = $validate;
        $params["user"] = $user;
        // 公共参数
        $params["secretId"] = $this->secret_id;
        $params["version"] = self::VERSION;
        $params["timestamp"] = sprintf("%d", round(microtime(true)*1000));// time in milliseconds
        $params["nonce"] = sprintf("%d", rand()); // random int
        $params["signature"] = $this->sign($this->secret_key, $params);

        $result = $this->send_http_request($params);
        return array_key_exists("result", $result) ? $result["result"] : false;
    }

    /**
     * 计算参数签名
     * @param $secret_key 密钥对key
     * @param $params 请求参数
     */
    private function sign($secret_key, $params){
        ksort($params); // 参数排序
        $buff="";
        foreach($params as $key=>$value){
            $buff .=$key;
            $buff .=$value;
        }
        $buff .= $secret_key;
        return md5($buff);
    }

    /**
     * 发送http请求
     * @param $params 请求参数
     */
    private function send_http_request($params){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, self::API_URL);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
        curl_setopt($ch, CURLOPT_TIMEOUT, self::API_TIMEOUT);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

        /*
         * Returns TRUE on success or FALSE on failure. 
         * However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, FALSE on failure.
         */
        $result = curl_exec($ch);
        // var_dump($result);
        
        if(curl_errno($ch)){
            $msg = curl_error($ch);
            curl_close($ch);
            return array("error"=>500, "msg"=>$msg, "result"=>false);
        }else{
            curl_close($ch);
            return json_decode($result, true);  
        }
    }
}
新建 ServiceProvider
vi AppProvidersCaptchaServiceProvider.php
app["validator"]->extend("captcha", function($attribute, $value, $parameters)
        {
            return (new CaptchaVerifier(config("captcha.captcha.CAPTCHA_ID"),config("captcha.captcha.SECRET_ID"),config("captcha.captcha.SECRET_KEY")))->verify($value);
        });
    }

    /**
     * Register any application services.
     *
     * This service provider is a great spot to register your various container
     * bindings with the application. As you can see, we are registering our
     * "Registrar" implementation here. You can add your own bindings too!
     */
    public function register()
    {
        
    }
    
}

vi config/app.php

"providers" => [
 "AppProvidersCaptchaServiceProvider",
]
vi config/captcha.php
#联系商务获取秘钥
"captcha"=>[
  "CAPTCHA_ID" => "xxxxx",
  "SECRET_ID" => "xxxxx",
  "SECRET_KEY" => "xxxxx",
]
调用
use IlluminateHttpRequest;

public function postLogin($q Request){
        $this->validate($q, [
            "captcha" => "required|captcha",
        ]);
       return response()->json(["code" => "200", "msg" => "success"])
}

文档地址
demo
类似的极验验证码

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26170.html

相关文章

  • 网易易盾验证

    摘要:之前用的图形验证码,现在改用网易云滑动验证码,效果如下这里基于来实现校验验证码易盾验证码二次校验构造函数验证码密钥对密钥对发起二次校验请求二次校验数据用户信息公共参数计算参数签名密钥对请求参数参数排序发送请求请求参数新建 之前用的图形验证码,现在改用网易云滑动验证码,效果如下 这里基于 laravel 来实现 showImg(https://segmentfault.com/img/b...

    Scholer 评论0 收藏0
  • 手机app有了短信验证还有没必要有图片验证

    摘要:以网易云易盾的验证码产品为例行为验证码具备运用大数据分析和机器学习模型进行优化升级的特点。路径可以理解为验证码展示用户行为分析机器人学习返回验证结果机器模型升级的循环,保证了网易云易盾行为式验证码的不断迭代升级。 当然有必要,这里我们来聊一个恶意短信验证的案例,通过这个案例我们就能更好理解短信验证码和图片验证码这两者的关系了。 讨论防止恶意短信验证之前,我们先来看看什么是恶意短信验证及...

    leejan97 评论0 收藏0
  • 网易易盾发布多国家多语种内容安全服务,助力中国互联网出海

    摘要:在年,网易云易盾所服务的诸多客户也陆续推出海外版产品,为更好地助力中国互联网出海,易盾近日发布支持海外产品的多语言多民族内容安全服务,对英语泰语马来语印尼语等海外语种地区提供策略支持。点击免费体验网易云易盾内容安全解决方案。 中国互联网企业迎来大航海时代,越来越多的中国互联网产品走向海外,特别是东南亚的印尼、泰国等移动互联网新兴市场。据《中国移动互联网出海环境全揭秘报告》,2017年Q...

    JowayYoung 评论0 收藏0
  • 如何通过人工智能“避开”内容安全的“坑”?

    摘要:人工智能技术的初步应用随着网络强国战略思想加强网络内容建设等指导思想的推出和强化,内容安全已经成为互联网企业生存和发展的生命线。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 10月16日,2018年 AIIA人工智能开发者大会在苏州举办。会议邀请了国内外人工智能产业知名人物、国家政府主管部门、行业内顶尖企业、知名学者代表、开源社区优秀贡献团队及个人,共同交流了技术现状趋势、生态...

    _DangJin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<