如何知道 reCAPTCHA v3 是否有效?

2024-01-12

我的前端使用 vuetify 如下:

   validate: async function () {
    let tokenCaptcha
    await this.$recaptcha('login').then((token) => {
      tokenCaptcha = token
    })

    if (this.$refs.form.validate() && tokenCaptcha) {
        let params = {
          birthDate: this.birthday,
          emailAddress: this.email,
          name: this.fullname,
          phoneNumber: this.phone,
          recaptcha: tokenCaptcha
        }
        this.modalSummary = true
        await this.setSummary(params) // Async vuex store / post to api backend
        if (this.dataSummary) {
          this.success = true
        } else {
          this.success = false
        }
    }
  }

参考 :https://www.npmjs.com/package/vue-recaptcha-v3 https://www.npmjs.com/package/vue-recaptcha-v3

我的后端/服务器端使用express js(node js),如下所示:

app.post('/summary', function (req, res) {
    if (req.body.recaptcha === undefined || req.body.recaptcha === '' || req.body.recaptcha === null) {
        res.send({success: false, msg: 'Please select captcha first'});
        return;
    }
    const secretKey = 'xxxxxx';
    const verificationURL = `https://www.google.com/recaptcha/api/siteverify?secret=${secretKey}&response=${req.body.recaptcha}&remoteip=${req.connection.remoteAddress}`;
    https.get(verificationURL, (resG) => {
        let rawData = '';
        resG.on('data', (chunk) => { rawData += chunk })
        resG.on('end', function() {
            try {
                var parsedData = JSON.parse(rawData);
                if (parsedData.success === true) {
                    let data = { 
                        date_of_birth: req.body.birthDate,
                        email_address: req.body.emailAddress,
                        full_name: req.body.name,
                        phone_number: req.body.phoneNumber,
                    }
                    let sql = "INSERT INTO summary SET ?";
                    let query = conn.query(sql, data,(err, results) => {
                        if(err) throw err;
                        res.send({success: "OK", message: 'Success', data: data});
                    });
                } else {
                    res.send({success: false, msg: 'Failed captcha verification'});
                    return;
                }
            } catch (e) {
                res.send({success: false, msg: 'Failed captcha verification from Google'});
                return;
            }
        });
    });
});

该代码是有效的。但如何知道 reCAPTCHA v3 是否有效?

因为版本3的验证码没有出现。我只是想确定我的代码流程是否正确。除此之外,我想检查验证码是否出现,如果它是机器人


  1. 在用户界面(右下角)上,您应该看到:
  1. 在后端:获取验证码响应的结果。喜欢:
console.info(parsedData)

必须看起来像:

{
  "success": true|false,      // whether this request was a valid reCAPTCHA token for your site
  "score": number             // the score for this request (0.0 - 1.0)
  "action": string            // the action name for this request (important to verify)
  "challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
  "hostname": string,         // the hostname of the site where the reCAPTCHA was solved
  "error-codes": [...]        // optional
}

^ https://developers.google.com/recaptcha/docs/v3#site_verify_response https://developers.google.com/recaptcha/docs/v3#site_verify_response

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道 reCAPTCHA v3 是否有效? 的相关文章

  • nuxt.js - 如何在服务器端为所有客户端缓存 axios 调用

    我正在使用 vue nuxt js 应用程序 我想知道是否可以为所有客户端缓存 axios webservice 调用 我必须获取一些货币参考数据 而每个客户都必须调用这些数据并没有多大意义 有人可以给我一些提示 甚至是一个例子吗 谢谢 这
  • 在 Vue.js 2.0 中实现 v-model 格式化的正确方法是什么

    举个简单的例子 输入货币数据的文本框 要求是以 1 234 567 格式显示用户输入并删除小数点 我尝试过 vue 指令 当 UI 由于其他控件而刷新时 不会调用指令的 update 方法 因此文本框中的值将恢复为没有任何格式的值 我还尝试
  • OSX 10.7.5 上的 node-gyp -- dyld:惰性符号绑定失败:找不到符号

    我搜索了很多 我发现与同一问题最接近的是这个 也没有答案 问题 未找到符号 libintl gettext https stackoverflow com questions 13759044 symbol not found libint
  • 如何修复 MongoClient is not a constructor 错误

    我刚刚学习 JavaScript 和 Nodejs 根据我在网上找到的一些代码 我编写了以下应用程序 当我尝试运行它时 我在第 9 行收到错误 其中显示 new MongoClient 错误提示 MongoClient 不是构造函数 您能解
  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • Strongloop 环回 如何使用路由进行静态服务?

    我想做类似的事情 server js app use client loopback static dirname client using middleware json 但该示例仅适用于根 files loopback static p
  • Express JS:请求的资源上不存在“Access-Control-Allow-Origin”标头

    我有一个在服务器上运行的 API 和一个连接到它以检索数据的前端客户端 我对跨域问题做了一些研究并使其发挥作用 但我不确定发生了什么变化 我现在在控制台中收到此错误 XMLHttpRequest 无法加载https api mydomain
  • 如何使 fs.readFile 异步等待?

    我这里有这个 NodeJS 代码 它读取文件夹并处理文件 该代码有效 但它仍然是先打印所有文件名 然后只读取文件 如何获取一个文件 然后先读取该文件的内容 而不是先获取所有文件 async function readingDirectory
  • 电子邮件模板中的剪贴板功能

    我想在电子邮件模板中发送优惠券代码 一个小按钮 用于复制剪贴板上输入元素的内容 通过电子邮件模板 我的意思是我想发送一封电子邮件 其中包含优惠券代码 并且电子邮件模板中会有一个按钮 允许我将其复制到剪贴板 这可以做到吗 任何帮助将不胜感激
  • Node.js 上的 Connect 出现“无法 GET /”

    我正在尝试使用以下方式开始提供一些静态网页connect像这样 var connect require connect var nowjs require now var io require socket io var app conne
  • 是否可以在 Promise.all 稍后向数组添加 Promise?

    我正在做一个项目 我问自己启动这个项目是否可行Promise all在 Javascript 中 他们确实向数组添加了更多 Promise 的任务 以及它们是否也在运行 const runAsyncFunctions async gt co
  • 导入 node.js 模块 - SyntaxError:意外的标识符

    我正在尝试执行以下导入 import ResClient from resclient Result home arran WebstormProjects untitled1 app js 2 import ResClient from
  • sails.js 水线嵌套填充查询

    我有一个返回对象的多个结果的查找查询 该对象包含一个包含另一个模型的模型 问题是水线不支持嵌套填充 因此它填充第一个模型 但不填充它的内部模型 我见过的所有示例都是针对 findOne 查询的 我正在寻找一种方法来解决返回多个结果的查找查询
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • MongoDB insertMany 并跳过重复项

    我试图insertMany https docs mongodb com manual reference method db collection insertMany 项目进入我的 Mongo 数据库 但我想跳过重复的 ID 我在用着N
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • Excel Add In - console.log 在哪里输出它的消息 - NodeJS

    我正在尝试使用 JavaScript API 创建 Excel 插件 但我不明白 console log 在哪里输出它们的消息 所有 Microsoft 文档都包含 console log 示例 但没有解释 console log 输出消息
  • Node.js:您什么时候知道异步任务集合何时完成?

    我想深入一个目录 并根据正则表达式检查我在其中看到的每个文件的名称 基本上是通用unix的一个版本find命令 仅用 Node js 编写 我不关心文件的顺序 但我确实想确保获得所有文件 我有以下代码 我认为 它接近我想要的 它需要一个 s
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • 如何在浏览器同步中配置端口

    我有一个gulp任务运行于browser sync 默认情况下它运行在node js服务器的端口3000上 我想将默认端口更改为任何其他端口 例如3010 var gulp require gulp connect require gulp

随机推荐

  • 将日期格式更改为 ddth mmm,yyyy

    我正在网络表单上打印一些日期 目前我的日期格式是dd mmm yyyy hh mm 如何将日期格式更改为ddth mmm yyyy for例子2016年5月17日 hh mm 这是我的代码 lastlogin DateTime Parse
  • /usr/bin/ld: 找不到 -lpthreads

    我正在 Fedora 22 上编译 NVIDIA Caffe 工具 但遇到问题需要查找lpthread图书馆 Determining if the pthread create exist failed with the following
  • 如何更改R图表中的默认字体大小

    我正在使用 R 包 cooccurr 无法弄清楚如何更改关联图形中的字体大小 par 方法似乎不起作用 这是包中给出的示例 data finches cooccur finches lt cooccur mat finches type s
  • 模块模式与匿名构造函数的实例

    于是就有了这个所谓的模块模式用于创建具有私有成员的单例 var foo function var foo private return foo function console log foo bar public 还有这个方法是我自己找到
  • 如何使用 click 来解析字符串中的参数?

    假设我有一个包含参数和选项的字符串列表 其中argparse 我可以使用以下方法解析这个列表parse args将函数转化为对象 如下 import argparse extra params sum 7 1 42 parser argpa
  • 如果中断 Git 推送会发生什么?

    我运行了以下命令 git push u origin master 推送 非常大 文件很多 所以上传需要时间 中途我发现我忘记添加几个文件 所以我做了 Ctrl C 在终端 中断 Git 然后做完之后git add 我又承诺了 然后又推了
  • DDD - 如何设计不同限界上下文之间的关联

    我已经设置了一个正在使用 ORM 填充的域项目 该域包含不同的聚合 每个聚合都有自己的根对象 我的问题是应该如何处理跨越聚合边界的属性 这些属性是否应该简单地忽略边界 以便有界上下文 A 中的域对象可以引用上下文 B 中的对象 或者 是否应
  • 如何检查一次 UserDefaults 是否为空

    我的应用程序计算日期和 NSDate 之间的天数 当我发布它时 用户只能保存一个日期 一个标题和一张背景图像 现在我有一个 UICollectionView 可以选择保存多个日期 并且它将通过将日期 标题和图像字符串附加到各自的数组来创建一
  • 分叉进程的执行顺序

    我知道还有另一个同名的线程 但这实际上是一个不同的问题 当一个进程多次分叉时 父进程是否先于子进程完成执行 反之亦然 同时 这是一个例子 假设我有一个 for 循环 将 1 个父进程分叉为 4 个子进程 在 for 循环结束时 我希望父进程
  • 使用 Json.net 反序列化具有接口值的复杂嵌套字典类型

    我在尝试使用 Json net 反序列化具有接口值的相当复杂的嵌套字典类型时遇到问题 代码位于此处 https dotnetfiddle net JSoAug https dotnetfiddle net JSoAug 有问题的类型是 pu
  • python 我可以向 os.listdir 提供用户名和密码吗?

    Python 3 4 Django 1 7 Windows Apache 2 4 12 我试图列出 Windows 共享驱动器上的所有文件 仅限某些用户 然后将几个文件写入共享驱动器 我正在使用 os listdir 来执行此操作 如果我只
  • 如何使用 Selenium webdriver 在 Capybara 中打开新窗口?

    我找到了一段代码 page driver browser switch to window 这显然是切换到已经打开的窗口 我们如何使用 page driver browser 对象打开一个新窗口 Thanks 我最终来到这里 即使是一个旧线
  • 没有匹配的函数调用“pthread_create”

    我正在使用 Xcode 和 C 制作一个简单的游戏 问题是下面的代码 include
  • 为什么在宏中使用明显无意义的 do-while 和 if-else 语句?

    在许多 C C 宏中 我看到宏的代码被包裹在看似毫无意义的内容中 do while环形 以下是示例 define FOO X do f X g X while 0 define FOO X if 1 f X g X else 我看不到什么d
  • 尽管身份密钥计数器在 TRY Catch 中且事务已回滚,但它仍会增加 1? SSMS 2008

    尽管身份计数器在 TRY Catch 中且事务已回滚 但它仍会增加 1 SSMS 2008 有什么方法可以阻止它 1 或回滚它 为了理解为什么会发生这种情况 让我们首先执行下面的示例代码 USE tempdb CREATE TABLE db
  • 将 Abaqus 宏转换为 Python 脚本

    我正在使用 Abaqus 6 13 运行 FEM 热模拟 我需要获得应用于该模型的总外部热通量 我的搜索表明 获得它的唯一方法是对整个模型的 RFLE 历史输出求和 并且效果很好 问题是我有大约 300 000 个元素模型 并且简单打开 R
  • JSON 上的 PostgreSQL 索引

    使用 Postgres9 4 我想在 json 列上创建一个索引 该索引将在搜索列中的特定键时使用 例如 我有一个 农场 表 其中包含 json 列 动物 Animals 列具有通用格式的 json 对象 cow 2 chicken 11
  • 如何在 grunt.initConfig() 之前执行异步操作?

    现在 我的 Gruntfile 设置可以执行一些自动检测魔法 例如解析源文件以解析 roder 中的一些 PHP 源 以动态找出运行前我需要知道的文件名和路径grunt initConfig 很遗憾grunt initConfig 似乎并不
  • jEditable:提交后显示选项文本(而不是值)

    我在选择列表上使用 jEditable 除了以下问题之外 它工作得很好 jEditable 在提交后显示服务器发回的任何内容 这对于文本框等非常有用 您可以在其中简单地从服务器发回提交的值 然而 这对选择列表没有意义 因为发布的值只是选项元
  • 如何知道 reCAPTCHA v3 是否有效?

    我的前端使用 vuetify 如下 validate async function let tokenCaptcha await this recaptcha login then token gt tokenCaptcha token i