c 服务器二次验证码,V5验证官网 - 基础套餐免费 -滑块验证,行为验证,防刷验证 - 文档...

平台对接

V5验证前后端对接流程如下图所示:

7bae89987c5c148f749ca17e1c6d6ab2.png

前后端调用时序图

对接V5验证分为业务网站后台api对接以及业务前端代码引入两部分。

业务网站后台

获取验证Token及验证服务器(getToken)

用于网站后台定时通过V5控制台刷新获取验证所需要的Token及验证服务器地址。Token有效期为24小时。

请求方式:GET

调用示例:

curl -X GET 'https://{host}/openapi/getToken?appid=dff58e0476e34b5899d4027733f8c14b&timestamp=1564220208945&signature=6c8e8e38d11dddb08d5b5a8fc750db68'

Request入参说明:

参数名

说明

示例

appid

当前网站应用对应的App Id

dff58e0476e34b5899d4027733f8c14b

timestamp

当前提交时的Unix时间戳,即北京时间1970-1-1 0:0:0到现在经过的毫秒数

1564220208945

signature

当前提交时的签名。详细见签名规则

6c8e8e38d11dddb08d5b5a8fc750db68'

Response返回格式:

{

"success": true,//请求是否成功标识

"data": {              //请求返回的消息体,详细以下列表说明

"expiresIn": "86400000",

"token": "e3e3d5d1aa4445e9bdde0bdb7eac37d6"

}

}

返回参数说明:

参数名

说明

示例

token

返回当前有效的token

e3e3d5d1aa4445e9bdde0bdb7eac37d6

expiresIn

token有效时长单位毫秒

86400000'

获取验证结果(verify)

在前端完成验证后,业务网站后台向V5验证服务器调用接口获取验证结果。验证结果最长保留5分钟,在业务网站后台成功获取结果后立即删除。

请求方式:GET

调用示例:

curl -X GET 'https://{host}/openapi/verify?&verifyid=ee92ede662aa43c3a68c2a369fa19c70&token=644112d89ac54bac97cee06d42e2137c&timestamp=1564220208945&signature=6c8e8e38d11dddb08d5b5a8fc750db68'

Request入参说明:

参数名

说明

示例

host

验证节点域名

xxxx.verify5.com

verifyid

前端验证时返回的票据,由前端验证后返回

ee92ede662aa43c3a68c2a369fa19c70

token

当前有效的token

644112d89ac54bac97cee06d42e2137c

timestamp

当前提交时的Unix时间戳,即北京时间1970-1-1 0:0:0到现在经过的毫秒数

1564220208945

signature

当前提交时的签名。详细见签名规则

注:host不参与签名

6c8e8e38d11dddb08d5b5a8fc750db68

Response返回格式:

{

"success": true,//请求是否成功或失败标识,true/false

}

前端对接

Web前端

1. 引入JS

在需要进行V5验证的页面,引入v5.js:

2. 样式表

默认情况下,v5.js会检测当前页面环境并自动植入v5.css,开发者也可手动在页面植入css代码样式表:

3. JS API校验

var v5=new com.strato.Verify5({//每次验证都要创建新的Verify5实例

host:"Host",//从后台getToken接口获得

token:"(Token)"//从后台getToken接口获得

});

v5.on("CANCEL",function(){

//当用户取消验证时触发

});

v5.verify(function(result){

var success=result.success;

if(success){

var verifyId=result.verifyId;

//TODO 将verifyId提交到应用服务器请求二次验证

}

});

4. npm引入方式

npm install verify5-html --save

import Verify5 from 'verify5-html'

let v5=new Verify5({//每次验证都要创建新的Verify5实例

host:"Host",//从后台getToken接口获得

token:"(Token)"//从后台getToken接口获得

};

v5.on("CANCEL",function(){

//当用户取消验证时触发

});

v5.verify(function(result){

var success=result.success;

if(success){

var verifyId=result.verifyId;

//TODO 将verifyId提交到应用服务器请求二次验证

}

});

5. Data API校验

V5支持通过自定义属性v5-config自动初始化UI控件。语法为:

v5.js会在页面加载完成后自动生成验证按钮组件,如下图效果:

6d1032fd3328b710208b4eb13e648d20.png

当用户点击按钮并验证通过时,会自动在div内生成hidden input:

其中,{name}为v5-config中传入的name(示例中为 "v5" ),{verifyId}为控件自动生成的唯一通过码,该字段需同业务表单一起提交至后台,并提交到验证服务器进行二次验证。

签名规则

签名生成方法如下:

对所有请求参数(包括公有参数和私有参数,但不包括 signature 参数),按照参数名ASCII码表升序顺序排序。如:foo=1f, bar=2B, foo_bar=3FB, baz=4baz 排序后的顺序是 bar=2B, baz=4baz, foo=1f, foobar=3FB。

将排序好的参数名和参数值构造成字符串,格式为:key1value1key2value2… 。根据上面的示例得到的构造结果为:bar2Bbaz4bazfoo1ffoobar3FB 。

选择与 appid 配对的 appkey ,加到上一步构造好的参数字符串之后,如 app=6308afb129ea00301bd7c79621d07591 ,则最后的参数字符串为:bar2Bbaz4bazfoo1ffoobar3FB6308afb129ea00301bd7c79621d07591。

把第3步拼装好的字符串采用 utf-8 编码,使用 MD5 算法对字符串进行摘要,计算得到 signature 参数值,将其加入到接口请求参数中即可。MD5 是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32位十六进制字符(小写)。

签名生成示例代码(java):

/**

* 生成签名信息

* @paramappKey产品私钥

* @param params 接口请求参数名和参数值map,不包括signature参数名

* @return

*/

public static String genSignature(String appKey, Mapparams){

// 1. 参数名按照ASCII码表升序排序

String[] keys = params.keySet().toArray(new String[0]);

Arrays.sort(keys);

// 2. 按照排序拼接参数名与参数值

StringBuilder sb = newStringBuilder();

for (String key : keys) {

sb.append(key).append(params.get(key));

}

// 3. 将secretKey拼接到最后

sb.append(appKey);

// 4. MD5是128位长度的摘要算法,转换为十六进制之后长度为32字符

return DigestUtils.md5Hex(sb.toString().getBytes("UTF-8"));

}

API接口一览

/openapi/getToken

该接口用于网站后台定时通过V5控制台刷新获取验证所需要的Token及验证服务器地址。Token有效期为24小时。

请求方式:GET

调用示例:

curl -X GET 'https://{host}/openapi/getToken?appid=dff58e0476e34b5899d4027733f8c14b&timestamp=1564220208945&signature=6c8e8e38d11dddb08d5b5a8fc750db68'

Request入参说明:

参数名

说明

示例

appid

当前网站应用对应的App Id

dff58e0476e34b5899d4027733f8c14b

timestamp

当前提交时的Unix时间戳,即北京时间1970-1-1 0:0:0到现在经过的毫秒数

1564220208945

signature

当前提交时的签名。详细见签名规则

6c8e8e38d11dddb08d5b5a8fc750db68

Response返回格式:

{

"success": true,//请求是否成功标识

"data": {        //请求返回的消息体,详细以下列表说明

"expiresIn": "86400000",

"token": "e3e3d5d1aa4445e9bdde0bdb7eac37d6"

}

}

返回参数说明:

参数名

说明

示例

token

返回当前有效的token

e3e3d5d1aa4445e9bdde0bdb7eac37d6

expiresIn

token有效时长单位毫秒

86400000

/openapi/verify

获取验证结果。在前端完成验证后,业务网站后台向V5验证服务器调用接口获取验证结果。验证结果最长保留5分钟,在业务网站后台成功获取结果后立即删除。

请求方式:GET

调用示例:

curl -X GET 'https://{host}/openapi/verify?&verifyid=ee92ede662aa43c3a68c2a369fa19c70&token=644112d89ac54bac97cee06d42e2137c&timestamp=1564220208945&signature=6c8e8e38d11dddb08d5b5a8fc750db68'

Request入参说明:

参数名

说明

示例

host

验证节点域名

xxxx.verify5.com

verifyid

前端验证时返回的票据,由前端验证后返回

ee92ede662aa43c3a68c2a369fa19c70

token

当前有效的token

644112d89ac54bac97cee06d42e2137c

timestamp

当前提交时的Unix时间戳,即北京时间1970-1-1 0:0:0到现在经过的毫秒数

1564220208945

signature

当前提交时的签名。详细见签名规则

注:host不参与签名

6c8e8e38d11dddb08d5b5a8fc750db68'

Response返回格式:

{

"success": true,//请求是否成功或失败标识,true/false

}

JS方法一览

class com.strato.Verify5(Object config)

v5构造函数,config参数包括:

ssl:boolean值,可以是true或者false,可不传,生产环境下默认为true。

host:即应用中的域名host

token:应用令牌,由服务端调用API(/openapi/getToken)获得

void on(String eventName,Function callback)事件监听。

eventName包括:

CANCEL:用户取消校验

DESTROY:控件控件销毁(当校验成功、取消、失败时均会触发,可用作校验结束标记)。

void verify(Function callback)

唤起校验窗口,当成功后触发callback。

callback接收result参数,包含两个属性:

success:校验是否通过

verifyId:校验通过后返回的唯一通过码

static com.strato.verify5.v5Field $(String id)

根据 id获取data api的对象实例,例如:

var field=com.strato.Verify5.$(" v5container" );

class com.strato.Verify5.v5Field()

data api的控件构造函数,一般无需手动实例化,可通过com.strato.Verify5.$方法获得对应的实例。

String getValue()

得到控件的校验结果(verifyId)

com.strato.Verify5 getVerify5()

得到对应的v5实例。

Android

待补充

Ios

待补充

小程序

待补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

战队服务器人员位置,和平精英:职业战队如何分配成员位置?5大定位划出5种职位...

#百度APP&百家号杯和平精英#随着时间的推进,距离百家号杯的决赛越来越近了;一百只精英队伍你争我抢都想要争取冠军的宝座。在最新的一场循环赛当中SC战队以70分的总积分占领榜首,Dae战队以69分的总积分紧随其后排名第二。虽说SC拿到了循环…

sony电视播放服务器文件,sony电视怎么样 sony电视支持视频格式【图文详解】

现在, 电视机 对于每个家庭来说已然不是什么奢侈品,并且已经成为必备的家庭电器之一。其实,国产电视机中也有不少的知名品牌,但是许多消费者对国外的电子技术持有更高的认可度,因此下面小编就来跟大家讲讲sony电视&…

css三栏布局技巧,CSS-三栏布局的常用6种方法

三栏布局一般指左右两栏固定宽度,中间一栏自适应的布局方法,也是许多网站常用的布局方式。如下图:该示例在一个html文件中编写,为方便起见,预先写好一个通用的css,左右宽度都为100px;1.浮动三栏…

jdk、jre及jvm的关系

很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。 JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 …

我的理解之JAVA中的4种访问权限

一、Java中有四种访问权限,private、default(一般省略)、public、protected。 private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问&…

ssh连接阿里云服务器遇到的坑

1. 出现‘Host key verification failed.’ 解决方案在这里找到: https://askubuntu.com/questions/45679/ssh-connection-problem-with-host-key-verification-failed-error 2. 自动断开—每隔一两分钟就自动断开 参考: https://superuser.com/quest…

云服务器文件传输问题

最近再做一个web项目,目前决定先把应用放在云服务器上。我选择的云主机是aliyun的Ubuntu 16.04主机。部署好云主机环境后,就需要把我在本地开发好的程序上传到云主机了。刚开始打算用ftp协议来传输,于是参照网上的教程(Ubuntu 16.…

Naive Bayes Classifier - 朴素贝叶斯分类器

Naive Bayes Classifier - 朴素贝叶斯分类器 简介 在机器学习中,朴素贝叶斯分类器是一系列基于“贝叶斯原理”和“特征之间独立分布假设”的概率分类器的总称。把它的名称分成两部分来看,一部分是“贝叶斯”对应的是“贝叶斯原理”;另一部分…

PL/SQL Developer调试Oracle存储过程

1,选中存储过程,右键,点击Edit,会打开一个窗口,提示错误信息2,添加debug information3,开始调试4,点击调试窗口上面的按钮进行调试

TCP三次握手和四次挥手以及11种状态

TCP三次握手和四次挥手以及11种状态 1、三次握手 置位概念:根据TCP的包头字段,存在3个重要的标识ACK、SYN、FIN ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连…

计算机网络体系结构——各层的功能

OSI七层架构 物理层主要功能:实现比特流的透明传输。基本单位:比特。 数据链路层主要功能 :封装成帧 。把帧从原MAC传到目的MAC(相邻节点之间帧的透明传输) 差错检测 循环冗余检测法。只检测有没有比特错误&#xf…

HTTP报文分析

一、HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行请求头请求体): 下面我们基于socket编写一个简单的HTTP server import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.Inp…

SSM框架整合一(springmvc+spring+mybatis+maven+tomcat)

一,环境说明 jdk1.7.0_07(cmd命令行输入java -version查看),点击下载 eclipse Kepler Service Release 2 apache-maven-3.3.9(cmd命令行输入mvn -v查看),点击下载 apache-tomcat-7.0.52,点击下载 mysql-5.5.28-winx64&#xff0c…

如何在windows机器上安装apache ab

为什么要使用apache ab,apache ab的是用来干嘛的,apache ab的命令? 如果您是来找上面这些问题的答案,那么请立刻关掉当前页面,因为这篇文章是纯粹的安装教程,避免浪费时间。 一,安装环境 win…

低版本Eclipse如何快速设置黑色主题

低版本的Eclipse(例如Kepler Service Release 2),没有自带的黑色主题,并且在线安装黑色主题会报错 去网上找了一圈结果都是骗人的,这个时候别着急,只需三个简单的步骤即可完成黑色主题配置。 下面是设置完…

eclipse中配置jad反编译插件

1 下载Eclipse支持jad插件的jar包 将下载得到的net.sf.jadclipse_3.3.0.jar放到eclipse》plugins目录下 2 eclipse配置jad插件 下载jad.exe 3 设置文件关联

SpringCloud学习之路(一)-简单Demo

首先,我们先在C:\Windows\System32\drivers\etc路径下的hosts最后添加两个地址用于模拟服务端以及消费端的IP 127.0.0.1 dept-8001.com #微服务端127.0.0.1 client.com #消费端 SpringCloud的一个最基础Demo,本地真实模拟环境(服务的创建者以及消费者),这是我们Demo截图: 分为一…

eclipse工作区打不开的解决方案

今天上班的时候发现eclipse打开总是闪退,刚开始以为是eclipse的问题,后来才发现是工作区的问题。 分享出来,希望能够帮助遇到同样问题的人。 1 设置询问打开的工作区 eclipse安装目录\configuration\.settings\org.eclipse.ui.ide.prefs&a…

解决debug JDK source无法查看局部变量的问题

首先进入传送门:https://blog.csdn.net/majian_1987/article/details/51273609 进行上面的操作之后,这个时候我们来debug一下jdk源码,发现可以查看局部变量。但是这时候又发现一个问题,在我自己的代码里按住ctrl鼠标左键单击无法…

配置JAVA开发环境

1、首先去Oracle官方网站下载所需版本的JDKhttp://java.sun.com/products/archive/,然后安装,其实只需要安装jdk就可以了,不需要安装jre 2、按照后配置环境变量JAVA_HOME 然后在path最前面添加%JAVA_HOME%\bin; 3、cmd中输入java -version,提…