开发者社区 问答 正文

阿里云验证码2.0这种的怎么写?

阿里云验证码2.0这种的怎么写?具体流程是 HTML给出一个form表单,然后表单提交之前。验证一下。返回的captchaVerifyParam 放在form的hidden里面 以供表单提交后后端去验证44367e7340c5b2eef0f912c0812e12c1.png
f2c524835d251dc84b0c6159125da07a.png
用googel 的 recaptcha是这样写

展开
收起
三分钟热度的鱼 2024-05-05 18:14:03 86 分享 版权
阿里云 AI 助理回答

阿里云验证码2.0的集成流程与Google reCAPTCHA类似,但具体实现方式有所不同。以下是基于HTML表单提交场景的详细实现步骤和代码示例:


1. 前端部分:HTML表单与验证码集成

在HTML页面中,您需要完成以下操作: - 集成阿里云验证码2.0的前端SDK。 - 在表单提交前调用验证码验证逻辑。 - 将返回的captchaVerifyParam存储到表单的隐藏字段中。

实现步骤

  1. 引入验证码2.0的前端SDK
    在HTML页面中加载阿里云验证码2.0的前端脚本文件。例如:

    <script src="https://g.alicdn.com/sd/ncpc/aliyun-captcha/2.0.0/index.js"></script>
    
  2. 创建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>
    
  3. 初始化验证码并绑定验证逻辑
    在表单提交前调用验证码验证接口,并将返回的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>
    

2. 后端部分:服务端验证

在表单提交后,后端需要对captchaVerifyParam进行验证,确保请求的合法性。

实现步骤

  1. 接收表单数据
    后端接收到表单提交的数据,包括captchaVerifyParam和其他业务参数。

  2. 调用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('服务器错误,请稍后重试!');
       }
    });
    
  3. 处理验证结果
    根据VerifyResult字段判断验证是否通过:

    • true:表示验证通过,可以继续处理业务逻辑。
    • false:表示验证失败,需根据VerifyCode返回具体的错误信息。

3. 注意事项

  • 场景ID配置
    确保前端和后端使用的sceneId一致,并且已在验证码2.0控制台正确配置。

  • 测试模式
    如果控制台开启了测试模式,可能会导致验证结果始终通过或始终失败。请根据实际需求调整策略配置。

  • 超时限制
    验证请求和初始化请求的间隔不能超过20分钟,否则会触发F007错误码。建议用户在超时后重新发起初始化请求。

  • 参数格式校验
    确保captchaVerifyParam由前端自动获取并直接传递给后端,不要对其进行任何修改,否则可能导致F002F003错误码。


4. 总结

通过上述步骤,您可以实现阿里云验证码2.0在HTML表单提交场景中的完整集成流程。前端负责初始化验证码并拦截表单提交,后端则通过调用VerifyIntelligentCaptcha接口验证请求的合法性。这种方式能够有效防止恶意请求,同时保持良好的用户体验。

如果您在集成过程中遇到问题,可以参考官方文档或提交工单进行排查。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答标签:
问答地址: