Подключить reCAPTCHA#

Политика v2 с флажком реагирует на проверочный ответ. Политика v3 получает токен для указанного действия до исходного запроса.

    # examples/docs/integration_recaptcha.py
    checkbox = recaptcha.v2_checkbox(scope=operation("login"))
    action = recaptcha.v3_action(
        scope=operation("createAccount"),
        site_key="public-site-key",
        action="create_account",
    )
Файл целиком
"""Construct Google reCAPTCHA protection presets."""

from __future__ import annotations

from eazy_sdk.protection import operation
from eazy_sdk_presets import recaptcha


def main() -> None:
    # docs:integration-recaptcha:start
    # examples/docs/integration_recaptcha.py
    checkbox = recaptcha.v2_checkbox(scope=operation("login"))
    action = recaptcha.v3_action(
        scope=operation("createAccount"),
        site_key="public-site-key",
        action="create_account",
    )
    # docs:integration-recaptcha:end
    print(f"protections: {checkbox.id}, {action.id}")


if __name__ == "__main__":
    main()
protections: recaptcha.v2-checkbox, recaptcha.v3-action:create_account

operation(...) ограничивает политику одной операцией SDK. Решатель возвращает типизированный токен и не изменяет запрос или состояние повторов. Способ применения, например form_field("g-recaptcha-response"), добавляет закрытое поле перед кодированием и подписью.

Если описание не содержит решателя, привяжите его через механизм внедрения зависимостей до выполнения запроса. Иначе предварительная проверка конфигурации вернёт типизированную ошибку.

Дальше#