阿里云人机验证之无痕验证集成

阿里云的官方文档:https://help.aliyun.com/document_detail/122071.html?spm=a2c4g.11186623.6.565.40d726afynSQtu

官方提供了demo,我在这里直接写一下我的集成

首先引入阿里云js

<script src="https://g.alicdn.com/AWSC/AWSC/awsc.js"></script>

前端是jsp页面,部分代码如下

    <!-- 验证 -->
    <div id="_nc" style="margin-left:auto;margin-right:auto;width: 91%;height: 48px;padding-top: 24px; display: none">
    	<div id="nc"></div>
    </div>
    <!-- 验证 -->
    
    <div class="iformbtnd mainmlr mrbtm"><a class="btna" id="btna" href="javascript:;">查询</a></div>

然后是js代码

var btn = document.getElementById("btna");
   AWSC.use("nvc", function (state, module) {
       // 初始化 调用module.init进行初始化
       window.nvc = module.init({
           appkey: "CF_APP_1", // 大家根据自己真实的填写
           scene: "nvc_register",// 大家根据自己真实的填写
           success: function (data) {
              window.console && console.log(data)
              findParking(data);
           },
           fail: function (failCode) {
              window.console && console.log(failCode)
            },
            error: function (errorCode) {
              window.console && console.log(errorCode)
            }
       });
       // 绑定事件
       btn.onclick = onclick;
   });
    
// 发送业务请求:点击按钮时触发,主动获取人机信息串,并发送给业务服务端
function onclick() {
    window.nvc.getNVCValAsync(function (nvcVal) {
    	findParking(nvcVal);
    });
}
   
function yourRegisterRequest(data) {
    if (data.code === "100" || data.code === "200") {
		// alert("register success!")

    } else if (data.code === "800" || data.code === "900") {
		// alert("重新刷新页面!")

    } else if (data.code === "400") {
    	// 二次验证
    	$("#_nc").show(); 
        var ncoption = {
           renderTo: "nc",
        }
        window.nvc.getNC(ncoption);
    }
}
    
// 查询车辆信息
function findParking (nvcVal){
  	 // 得到车牌号码
 	var plateNum=getPlateipDIDVal();
	$.tenetAjax({
		url: PATH + "/punitWS/findParkingCarInfoByPlate",
		data: {"data":nvcVal, "plateNum":encodeURIComponent(plateNum)},
		async: false,
		success: function(data){
			yourRegisterRequest(data);
		}
	});
}

前端代码集成完毕,以下是后台集成,首先下载sdk,引入jar文件(点击下载)。

	String data;
	
	public String getData() {
		return data;
	}

	public void setData(String data) {
		this.data = data;
	}
	/**
	 * 根据车牌号码查询在场车辆信息--无痕验证
	 * 
	 * @return
	 */
	public String findParkingCarInfoByPlate() {
		if (StringUtils.isEmpty(data)) {
			this.setPass(false);
			this.setMsg("请求失败,请刷新重试");
			return SUCCESS;
		}
		// 调用阿里云API接口所需参数
		String regionid = "regionid ";
		String accessKeyId = "accessKeyId ";
		String accessKeySecret = "accessKeySecret ";
		IClientProfile profile = DefaultProfile.getProfile(regionid, accessKeyId, accessKeySecret);
		IAcsClient client = new DefaultAcsClient(profile);
		try {
			DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
		} catch (ClientException e) {
		}

		AnalyzeNvcRequest request = new AnalyzeNvcRequest();
		request.setData(data);// 必填参数,由前端获取getNVCVal方法获得的值。
		// 通过setScoreJsonStr方法声明"服务端调用人机验证服务接口得到的返回结果"与"前端执行操作"间的映射关系,并通知验证码服务端进行二次验证授权。
		// 注意:前端页面必须严格按照该映射关系执行相应操作,否则将导致调用异常。
		// 例如,在setScoreJsonStr方法中声明"400":"NC",则当服务端返回400时,您的前端必须唤醒滑动验证(NC),如果唤醒其他验证,则将导致失败。
		request.setScoreJsonStr("{\"200\":\"PASS\",\"400\":\"NC\",\"800\":\"BLOCK\"}");// 根据业务需求设置各返回结果对应的客户端处置方式。
		try {
			AnalyzeNvcResponse response = client.getAcsResponse(request);
			code = response.getBizCode();
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (!StringUtils.isEmpty(code) && (code.equals("200") || code.equals("100"))) {
			punitMap = this.toMap(wxService.findParkingCarInfoByPlate(plateNum));
		}
		return SUCCESS;
	}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木小百99

听说打赏的人都发财了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值