如何验证服务器调用中的recaptcha?

Cod*_*000 8 javascript ajax jquery recaptcha node.js

情况:

我曾经用一个简单的表格提交检查我的recaptcha,用POST命令"/ login".

出于安全原因,我需要更改我的实现,并希望执行以下操作:

1)Jquery表单提交.

2)调用服务器以在服务器上调用verify recaptcha.

3)无需重新加载页面即可接收响应.

4)根据响应接受或不接受登录请求.


题:

看起来我可以发出一个AJAX请求?但我不知道怎么做.


客户代码:

<div class ="containerMargins">
        <h1 class = "authTitle">Login</h1>
        <form id="loginForm">
          <div class="form-group">
            <label>Email</label>
            <input type="email" class="form-control" name="email" id="loginEmail" placeholder="You can't forget it :)" required>
          </div>
          <div class="form-group">
            <label>Password</label>
            <input type="password" class="form-control" name="password" id="loginPassword" placeholder="We hope you didn't forget it ^^" required minlength="12">
          </div>
          <div class="g-recaptcha" data-sitekey="6LcRrxMUAAAAANx-AXSdRLAo4Pyqfqg-1vuPSJ5c"></div>
          <button class="btn btn-default" id="loginButton">Submit</button> <span class="userLinks">
          <a class="logLinks" href="/users/register">Register</a><a href="/users/password">Password?</a></span>
        </form>
    </div>

</div>

<% include ../partials/indexScripts %>

<script>

$("#loginForm").submit(function(e) {

    e.preventDefault(); 
    var email = $("#loginEmail").val();
    var password = $("#loginPassword").val();

    // WOULD LIKE TO MAKE SERVER CALL HERE TO CHECK RECAPTCHA BUT I DONT KNOW HOW

    $this = $(this);
    $.ajax({
        type: "POST",
        url: "users/register",
        data: $this.serialize()
    }).done(function(data) {

    if (successfulRecaptcha) {
          firebase.auth().signInWithEmailAndPassword(email, password ).then( authData => {
    }
    else {
         console.log("You are a robot!");
    }
Run Code Online (Sandbox Code Playgroud)

服务器代码:

router.post('/login', function(req, res, next) {
    verifyRecaptcha(req.body["g-recaptcha-response"], function(success) {
        if (success) {

        } else {

        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Cod*_*000 5

我找到了解决方案:

前端:

$this = $(this);
    $.ajax({
        type: "POST",
        url: "login",
        data: $this.serialize()
    }).done(function(data) {

        if (data == true) {
Run Code Online (Sandbox Code Playgroud)

BACKEND:

router.post('/login', function(req, res, next) {
    verifyRecaptcha(req.body["g-recaptcha-response"], function(success) {
        if (success) {
            res.send(true);
        } else {
            res.send(false);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)