gpt4 book ai didi

python - Django-ratelimit 不限制

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:03 27 4
gpt4 key购买 nike

我在 Heroku 上使用 Django-ratelimit 时遇到问题,限制器不起作用。我没有收到任何错误。有什么建议我做错了什么吗?

View .py

from django.core.cache import cache
from ratelimit.mixins import RatelimitMixin

[...]

class LoginView(RatelimitMixin, FormView):
ratelimit_key = 'user'
ratelimit_rate = '1/5m'
ratelimit_method = 'GET'
ratelimit_block = True

template_name = "account/login.html"
template_name_ajax = "account/ajax/login.html"
form_class = LoginUsernameForm
form_kwargs = {}
redirect_field_name = "next"

@method_decorator(sensitive_post_parameters())
@method_decorator(csrf_protect)
@method_decorator(never_cache)
def dispatch(self, *args, **kwargs):
return super(LoginView, self).dispatch(*args, **kwargs)

def get(self, *args, **kwargs):
if is_authenticated(self.request.user):
return redirect(self.get_success_url())
return super(LoginView, self).get(*args, **kwargs)

设置.py

# RATELIMIT SETTINGS
#RATELIMIT_CACHE_PREFIX = 'rl:'
RATELIMIT_ENABLE = True
RATELIMIT_USE_CACHE = 'default'
#RATELIMIT_VIEW = None

最佳答案

只是一些可能出错的想法。请注意,我从未使用过这个应用程序,我只是看了 ratelimit's documentation .

ratelimit_key 更改为 ip,而不是 user

由于它位于登录页面,我相信 user 键不会产生任何效果,因为它依赖于 request.user

您可能想要的是使用 ip 来代替。

class LoginView(RatelimitMixin, FormView):
ratelimit_key = 'ip'
ratelimit_method = 'POST'

它可能需要您将 ratelimit_method 更改为 POST。至少对我来说更有意义。

了解更多关于 Ratelimit Keys - Common Keys .

PS:既然您提到您的应用程序部署在 Heroku 上,那么获取客户端 IP 地址可能会出现问题,该地址可能由 django-ratelimt 应用程序使用。阅读有关此问题的更多信息:Get client's real IP address on Heroku .

关于python - Django-ratelimit 不限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48800685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com