阿里云验证码2.0这种的怎么写?具体流程是 HTML给出一个form表单,然后表单提交之前。验证一下。返回的captchaVerifyParam 放在form的hidden里面 以供表单提交后后端去验证
用googel 的 recaptcha是这样写
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云验证码2.0的集成流程与Google reCAPTCHA类似,但具体实现方式有所不同。以下是基于HTML表单提交场景的详细实现步骤和代码示例:
在HTML页面中,您需要完成以下操作: - 集成阿里云验证码2.0的前端SDK。 - 在表单提交前调用验证码验证逻辑。 - 将返回的captchaVerifyParam
存储到表单的隐藏字段中。
引入验证码2.0的前端SDK
在HTML页面中加载阿里云验证码2.0的前端脚本文件。例如:
<script src="https://g.alicdn.com/sd/ncpc/aliyun-captcha/2.0.0/index.js"></script>
创建HTML表单
表单中包含一个隐藏字段用于存储captchaVerifyParam
,以及一个提交按钮。
<form id="myForm" action="/submit" method="POST">
<!-- 其他表单字段 -->
<input type="text" name="username" placeholder="请输入用户名" required />
<!-- 验证码隐藏字段 -->
<input type="hidden" id="captchaVerifyParam" name="captchaVerifyParam" />
<!-- 提交按钮 -->
<button type="submit">提交</button>
</form>
初始化验证码并绑定验证逻辑
在表单提交前调用验证码验证接口,并将返回的captchaVerifyParam
填充到隐藏字段中。
<script>
// 初始化验证码实例
const captcha = new AliyunCaptcha({
sceneId: 'your_scene_id', // 替换为您的场景ID
onSuccess: function (captchaVerifyParam) {
// 验证成功后,将captchaVerifyParam填充到隐藏字段
document.getElementById('captchaVerifyParam').value = captchaVerifyParam;
// 继续提交表单
document.getElementById('myForm').submit();
},
onError: function (err) {
console.error('验证码验证失败:', err);
alert('验证码验证失败,请重试!');
}
});
// 拦截表单提交事件
document.getElementById('myForm').addEventListener('submit', function (event) {
event.preventDefault(); // 阻止默认提交行为
captcha.verify(); // 调用验证码验证
});
</script>
在表单提交后,后端需要对captchaVerifyParam
进行验证,确保请求的合法性。
接收表单数据
后端接收到表单提交的数据,包括captchaVerifyParam
和其他业务参数。
调用VerifyIntelligentCaptcha接口
使用阿里云提供的服务端SDK调用VerifyIntelligentCaptcha
接口,验证captchaVerifyParam
的有效性。
示例代码(以Node.js为例):
const AliyunCaptcha = require('aliyun-captcha-sdk'); // 引入SDK
app.post('/submit', async (req, res) => {
const { captchaVerifyParam, username } = req.body;
try {
// 调用VerifyIntelligentCaptcha接口
const result = await AliyunCaptcha.verifyIntelligentCaptcha({
captchaVerifyParam: captchaVerifyParam,
sceneId: 'your_scene_id' // 替换为您的场景ID
});
if (result.VerifyResult) {
// 验证通过,继续处理业务逻辑
console.log('验证码验证通过');
res.send('表单提交成功!');
} else {
// 验证失败,返回错误信息
console.error('验证码验证失败:', result.VerifyCode);
res.status(400).send('验证码验证失败,请重试!');
}
} catch (error) {
console.error('验证码验证出错:', error);
res.status(500).send('服务器错误,请稍后重试!');
}
});
处理验证结果
根据VerifyResult
字段判断验证是否通过:
true
:表示验证通过,可以继续处理业务逻辑。false
:表示验证失败,需根据VerifyCode
返回具体的错误信息。场景ID配置
确保前端和后端使用的sceneId
一致,并且已在验证码2.0控制台正确配置。
测试模式
如果控制台开启了测试模式,可能会导致验证结果始终通过或始终失败。请根据实际需求调整策略配置。
超时限制
验证请求和初始化请求的间隔不能超过20分钟,否则会触发F007
错误码。建议用户在超时后重新发起初始化请求。
参数格式校验
确保captchaVerifyParam
由前端自动获取并直接传递给后端,不要对其进行任何修改,否则可能导致F002
或F003
错误码。
通过上述步骤,您可以实现阿里云验证码2.0在HTML表单提交场景中的完整集成流程。前端负责初始化验证码并拦截表单提交,后端则通过调用VerifyIntelligentCaptcha
接口验证请求的合法性。这种方式能够有效防止恶意请求,同时保持良好的用户体验。
如果您在集成过程中遇到问题,可以参考官方文档或提交工单进行排查。