reCAPTCHA не останавливает вход пользователей - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь использовать Google reCAPTCHA для своей формы входа, чтобы предотвратить спам.После выполнения необходимых шагов, чтобы все это заработало, пользователи все равно могут войти в систему.Они могут заполнить там данные и войти в систему, отметив флажок, который не является правильным.

Я думаю, что это может быть размещение в DOM, поэтому я попытался переместить его, и это не сработало.

КОД:

{% extends 'public/base.html' %}
{% load staticfiles %}
{% load crispy_forms_tags %}

{% block head %}
    <link rel="stylesheet" type="text/css" href="{% static "public/css/auth.css" %}" />
{% endblock %}

{% block content %}
    <div class="container mt-5 mb-5 login-container">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group mt-4">
                <legend class="border-bottom mb-4">Log In</legend>
                {{ form|crispy }}
                <script src="https://www.google.com/recaptcha/api.js" async defer></script>
                <div class="g-recaptcha" data-sitekey="################################
                "></div>
            </fieldset>
            <div class="form-group">
                <button class="btn btn-success" type="submit">Login</button>
                <small class="text-muted ml-2">
                    <a href="{% url 'password_reset' %}">Forgot Password?</a>
                </small>
            </div>
        </form>
        <div class="border-top pt-3 mb-4">
            <small class="text-muted">
                Need An Account? <a class="ml-2" href="{% url 'register' %}">Sign Up Now</a>
            </small>
        </div>
    </div>
{% endblock %}```

Thanks.

1 Ответ

0 голосов
/ 13 июня 2019

Когда вы используете капчу, текстовая область динамически добавляется внутрь <div class="g-recaptcha">.Это текстовое поле не отображается и по умолчанию имеет значение id="g-recaptcha-response".

. Вы можете получить его с помощью:

document.getElementById('g-recaptcha-response').value

В форме входа в систему вы должны проверить, имеет ли это текстовое поле значение или нет,Если он имеет значение, то пользователь успешно использовал капчу и может продолжить процесс входа в систему.

Примерно так:

<form onsubmit="return check_form()">
...
</form>

<script>
function check_form()
{
   return document.getElementById('g-recaptcha-response').value != '';
}
</script>

Если check_form() возвращает FALSE, то формане представлено.

...