【问题标题】:How can I verify token google recaptcha 3 on adonis js?如何在 adonis js 上验证令牌 google recaptcha 3?
【发布时间】:2019-11-15 04:15:05
【问题描述】:

我使用 vue 作为我的前端。我像这样从前端发送令牌:

let payload = {
    token: tokenCaptcha
}

axios.post(`http://127.0.0.1:3333/api/v1/category`, payload)
    .then(response => {
        return response.data
    }).catch(
    error => {
        console.log(error)
    })

令牌将用于在后端进行验证。我的后端使用 adonis.js

控制器脚本如下:

'use strict'
class CategoryController {
  async store ({ request, response }) {
    return request.input('token')
  }
}
module.exports = CategoryController

我的路线是这样的:

Route.group(()=>{
  Route.post('category', 'CategoryController.store')
}).prefix('api/v1')

如何验证 adonis.js(backend) 上的令牌?

我有搜索参考。但是没找到

【问题讨论】:

    标签: vue.js vue-component recaptcha adonis.js


    【解决方案1】:

    您需要使用axios。比如:

    const axios = use('axios')
    const Env = use('Env')
    const querystring = use('querystring')
    
    async store({ request, response }) {
      const data = request.only(['token'])
    
      try {
        const data_request = await axios.post('https://www.google.com/recaptcha/api/siteverify', querystring.stringify({ secret: Env.get('RECAPTCHA_PRIVATE_KEY'), response: data['token'], remoteip: '172.217.23.110' }))
        if (!data_request.data.success) {
          //If the recaptcha check fails
          ...
        }
      } catch (error) {
        ...
      }
    }
    

    Google documentation - Verifying the user's response

    此代码是为 v2 编写的。但是验证是一样的:https://developers.google.com/recaptcha/docs/v3#site_verify_response

    【讨论】:

    • 看来也必须使用参数remoteip
    • 似乎还需要添加一个bodyparser。希望你能完整回答
    • 我更新了答案。告诉我一切是否正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多