阿里行为检测接入

2020-10-29  本文已影响0人  无聊的电风扇

没找到composer地址

下载php的sdk

require_once aliyun-php-sdk-core/Config.php;
use DefaultProfile;
use DefaultAcsClient;

前端文档

https://help.aliyun.com/document_detail/121898.html?spm=5176.2020520162.0.0.e8535fb0HR99Zv

示例代码

<html>
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
    <!--适用于主要访问来自中国内地地区用户的业务场景-->
    <script type="text/javascript" charset="utf-8" src="//g.alicdn.com/sd/nch5/index.js?t=2015052012"></script>
    <!--适用于主要访问来自非中国内地地区用户的业务场景-->
    <!-- <script type="text/javascript" charset="utf-8" src="//aeis.alicdn.com/sd/nch5/index.js?t=2015052012"></script> -->
</head>
<body>
    <div id="__nc" style="margin-left:auto;margin-right:auto;width:80%;height:100px;padding-top:100px;">
        <div id="nc"></div>
    </div>
    <script>  
    var nc_token = ["CF_APP_1", (new Date()).getTime(), Math.random()].join(':');
    var nc=NoCaptcha.init({
        //声明滑动验证需要渲染的目标元素ID。
        renderTo: '#nc',
        //应用类型标识。它和使用场景标识(scene字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
        appkey: 'CF_APP_1', 
        //使用场景标识。它和应用类型标识(appkey字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的scene值,请务必正确填写。
        scene: 'register',
        //滑动验证码的主键,请勿将该字段定义为固定值。确保每个用户每次打开页面时,其token值都是不同的。系统默认的格式为:”您的appkey”+”时间戳”+”随机数”。
        token: nc_token,
        //业务键字段,可为空。为便于线上问题的排查,建议您按照线上问题定位文档中推荐的方法配置该字段值。
        trans: {"key1": "code0"},
        //语言,默认值为cn(中文)。HTML5应用类型默认支持简体中文、繁体中文、英文语言。
        language: "cn",
        //内部网络请求的超时时间。一般情况建议保持默认值(10000ms)。
        timeout: 10000,
        //允许服务器超时重复次数,默认5次。
        retryTimes: 5,
        //验证通过后,验证码组件是否自动隐藏,默认不隐藏(false)。
        bannerHidden:false,
        //是否默认不渲染,默认值false。当设置为true时,不自动渲染,需要自行调用show方法进行渲染。
        initHidden:false,
        //前端滑动验证通过时会触发该回调参数。您可以在该回调参数中将请求标识(token)、会话ID(sessionid)、签名串(sig)字段记录下来,随业务请求一同发送至您的服务端调用验签。
        callback: function (data) {
            window.console && console.log(nc_token)
            window.console && console.log(data.csessionid)
            window.console && console.log(data.sig)
        },
        error: function (s) {
        }
    });
    NoCaptcha.setEnabled(true);
//请务必在此处调用一次reset()方法。
nc.reset(); 
//用于配置滑动验证的自定义文案。详细信息,请参见自定义文案与多语言文档。
NoCaptcha.upLang('cn', {
        //加载状态提示。
        'LOADING':"加载中...", 
        //等待滑动状态提示。
        'SLIDER_LABEL': "请向右滑动验证", 
        //验证通过状态提示。
        'CHECK_Y':"验证通过", 
        //验证失败触发拦截状态提示。
        'ERROR_TITLE':"非常抱歉,这出错了..." 
    });
    </script>
</body>
</html>

部署成功后,进行验证,阿里会返还三个参数,签名,token,sessionid,把这三个参数发给后台,进行后台验签
后台

$iClientProfile = DefaultProfile::getProfile("cn-hangzhou", "阿里云appkeyid", "阿里云密钥");
        $client = new DefaultAcsClient($iClientProfile);
        DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
        $request = new Afs\AuthenticateSigRequest();
        $request->setSessionId($SessionId);// 会话ID。必填参数,从前端获取,不可更改。
        $request->setToken($Token);// 请求唯一表示。必填参数,从前端获取,不可更改。
        $request->setSig($Sig);// 签名串。必填参数,从前端获取,不可更改。
        $request->setScene("场景标识");// 场景标识。必填参数,从前端获取,不可更改。
        $request->setAppKey("应用类型标识");// 应用类型标识。必填参数,后端填写。
        $request->setRemoteIp($ip_address);// 客户端IP。必填参数,后端填写。
        $response = $client->getAcsResponse($request);// 返回code 100表示验签通过,900表示验签失败
        return $response->Code;
上一篇下一篇

猜你喜欢

热点阅读