.net core API获取验证码前引用阿里云无痕验证
1、前端代码实例
代码都写了备注,你们就自己看看吧
<button type="button" class="layui-btn layui-btn-color border-radius" onclick="sendCode()" id="btnSendCode">获取验证码</button>
// 实例化nvc 对无痕验证进行初始化操作
AWSC.use("nvc", function (state, module) {
// 初始化 调用module.init进行初始化
window.nvc = module.init({
// 应用类型标识。它和使用场景标识(scene字段)一起决定了无痕验证的业务场景与后端对应使用的策略模型。您可以在阿里云验证码控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
appkey:appkey字段值,
//使用场景标识。它和应用类型标识(appkey字段)一起决定了无痕验证的业务场景与后端对应使用的策略模型。您可以在阿里云验证码控制台的配置管理页签找到对应的scene值,请务必正确填写。
scene: scene值,
// 二次验证获取人机信息串,跟随业务请求一起上传至业务服务器,由业务服务器进行验签。
success: function (data) {
window.console && console.log(data)
},
// 前端二次验证失败时触发该回调参数
fail: function (failCode) {
window.console && console.log(failCode)
},
// 前端二次验证加载异常时触发该回调参数。
error: function (errorCode) {
window.console && console.log(errorCode)
}
});
});
// 发送业务请求:点击按钮时触发,主动获取人机信息串,并发送给业务服务端
function sendCode() {
if (!isMobile($("#Mobile").val())) {
showError('获取验证码失败', '请输入正确的手机号');
return false;
}
window.nvc.getNVCValAsync(function (nvcVal) {
// 获取人机信息串
// 将以下getNVCVal()函数的值,跟随业务请求一起上传,由后端请求AnalyzeNvc接口并返回200,400,600或者800。
verificationData(nvcVal);
});
}
//这里的代码目的是调用后端获取验证码接口,我这里对ajax进行封装,你们可以用ajax来进行调用后端接口
function verificationData(data) {
let that = this;
doPostJson('/api/sendCode', { mobile: $("#Mobile").val(), RequestType: 'updatePwd', Data: data }, function (result, textStatus) {
if (result.Success) {
//这里是调用成功就结束了,我这里成功后调用其它方法,你们可根据自己需求来
that.codeDown(countNum);
}
else {
showError("获取验证码失败", result.Msg, result.Msg.substring(0, 5) == '验证不通过' ? function () {
location.reload();
} : '')
return;
}
});
}
2、后端无痕验证方法实例
获取验证码对Nontrace方法进行验证,验证成功才发送验证码,data参数由前端传的Data值,返回200代表验证成功
SiteConfigByDb.Regionid是阿里云提供的Regionid
SiteConfigByDb.AccessKeyId是阿里云提供的AccessKeyId
SiteConfigByDb.AccessKeySecret是阿里云提供的AccessKeySecret
/// <summary>
/// 无痕验证方法
/// </summary>
/// <param name="data">data由前端传的Data值</param>
/// <returns></returns>
public string Nontrace(string data)
{
#region 无痕验证
IClientProfile profile = DefaultProfile.GetProfile(SiteConfigByDb.Regionid, SiteConfigByDb.AccessKeyId, SiteConfigByDb.AccessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
AnalyzeNvcRequest analyze = new AnalyzeNvcRequest();
//必填参数,由前端获取getNVCVal方法获得的值。
//通过setScoreJsonStr方法声明"服务端调用阿里云验证码接口得到的返回结果"与"前端执行操作"间的映射关系,并通知验证码服务端进行二次验证授权。
//注意:前端页面必须严格按照该映射关系执行相应操作,否则将导致调用异常。
//例如,在setScoreJsonStr方法中声明"400":"NC",则当服务端返回400时,您的前端必须唤醒滑动验证(SC),如果唤醒其他验证,则将导致失败。
analyze.Data = data;
//("{\"200\":\"PASS\",\"400\":\"NC\",\"800\":\"BLOCK\"}");//根据业务需求设置各返回结果对应的客户端处置方式。
analyze.ScoreJsonStr = "{\"200\":\"PASS\",\"400\":\"NC\",\"800\":\"BLOCK\"}";
AnalyzeNvcResponse response = client.GetAcsResponse(analyze);
return response.BizCode;
#endregion
}
3、官方网址教程
https://help.aliyun.com/document_detail/122773.html