我在我的网站上安装了recaptcha(使用django rest framework和angularjs),但我现在不知道如何获得g-recaptcha-response任何人都可以显示示例
$scope.submit = function() {
$http.get('https://www.google.com/recaptcha/api/siteverify').success(function (data) {
$http.post(callbackUrl, $scope.callback).success(function (data) {
$scope.isFormActive = false;
}).error(function (data, status, headers, config) {
alert('Incorrect');
});
}).error(function (data, status, headers, config) {
alert('Incorrect');
});
};
我现在不知道如何为https://www.google.com/recaptcha/api/siteverify设置参数密钥和响应 感谢
答案 0 :(得分:0)
你可以通过在你的javascript中调用“grecaptcha.getResponse()”来获得g-recaptcha-response 来源:get_recaptcha_response
答案 1 :(得分:0)
如果您正在使用Django REST框架(DRF),则可能需要检出以下软件包:
前两个正在实现DRF Recaptcha序列化器字段,您可以将其放入序列化器中,并且它具有自己的验证器,可调用Google验证URL。最后一个(django-rest-captcha
包)正在使用自己的验证器再次实现序列化器。所有软件包都在pypi上,因此您可以使用pip安装它们。
根据documentation的前端集成:
<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_site_key', {action: 'homepage'}).then(function(token) {
...
});
});
</script>
以下是使用django-rest-framework-recaptcha
软件包进行BE的示例代码。
序列化器:
from rest_framework import serializers
from rest_framework_recaptcha.fields import ReCaptchaField
class ReCaptchaSerializer(serializers.Serializer):
recaptcha = ReCaptchaField()
查看:
class VerifyTokenAPI(views.APIView):
allowed_methods = ["POST"]
def post(self, request, *args, **kwargs):
serializer = ReCaptchaSerializer(data=request.data)
if serializer.is_valid():
return Response({'success': True}, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
网址:
urlpatterns = [
...
path("/my/api/endpoint/", VerifyTokenAPI.as_view()),
]
对BE的基本测试调用:
data = {"recaptcha": "token"}
response = client.post("/my/api/endpoint/", data)
assert response.status_code == 200