EB2*_*127 3 reactjs next.js recaptcha-v3 react-google-recaptcha
我正在使用库react-google-recaptcha-v3将 reCAPTCHA v3 集成到我的 React 应用程序中,该应用程序也使用 Next。
自述文件中有以下示例向用户介绍该useGoogleReCaptcha挂钩:
import {
GoogleReCaptchaProvider,
useGoogleReCaptcha
} from 'react-google-recaptcha-v3';
const YourReCaptchaComponent = () => {
const { executeRecaptcha } = useGoogleReCaptcha();
const token = executeRecaptcha("login_page");
return (...)
}
ReactDom.render(
<GoogleReCaptchaProvider reCaptchaKey="[Your recaptcha key]">
<YourReCaptchaComponent />
</GoogleReCaptchaProvider>,
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
我很困惑我应该如何使用const token = executeRecaptcha("login_page"). 我目前不明白开发人员应该如何使用它token。是否没有与此令牌关联的“分数”,从而禁止潜在的机器人使用该页面?
如何验证此令牌并使用它?任何帮助表示赞赏。
该分数与令牌相关联,但当您使用令牌本身执行实际的后端验证请求时,将会生成该分数。本段第 3 步
要点如下:
这是一个带有 Promise 的节点示例。您也可以简单地使用fetch
import * as request from 'request'; // from "web-request": "^1.0.7",
async check(recaptchaResponse: string, remoteAddress: string): Promise<boolean> {
const secretKey = "";
return new Promise<boolean>((resolve, reject) => {
const verificationUrl = 'https://www.google.com/recaptcha/api/siteverify?secret=' + secretKey + '&response=' + recaptchaResponse + '&remoteip=' + remoteAddress;
request(verificationUrl
, function(error, response, body) {
if (error) {
return reject(false);
}
if (response.statusCode !== 200) {
return reject(false);
}
body = JSON.parse(body);
const passCaptcha = !(body.success !== undefined && !body.success);
resolve(passCaptcha);
});
});
}
Run Code Online (Sandbox Code Playgroud)
例如:
app.post('/', function(req, res){
recaptcha.verify(req, function(error, data){
if (!req.recaptcha.error) {
// success code
} else {
// error code
}
});
});
Run Code Online (Sandbox Code Playgroud)
{
"success": true,
[...]
"score": 0.9,
"action": "examples/v3scores",
"error-codes": []
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7896 次 |
| 最近记录: |