我正在将一个现有的Django项目迁移到使用Wagtail CMS。
我不清楚如何在Wagtail中实现速率限制,因为在文档中我没有找到相关的内容。
下面是一个示例:
在集成Wagtail之前,我有一个视图用于返回隐私政策HTML页面,并通过Redis对其进行了速率限制。您可以看到方法装饰器和方法如下所示:
@ratelimit(
key='ip',
rate='15/m',
block=True
)
def show_privacy_policy(request):
context = base_context(request)
return render(
request,
'pages/privacy_policy.html',
context
)
现在这个视图已被移除,取而代之的是一个更为通用的Wagtail页面模型,用于渲染如条款和条件或隐私政策等页面,我将其称为InfoPage
。我仅定义了一个InfoPage模型,并关联了模板路径wagtail/info_page.html
。
class InfoPage(Page):
template = "wagtail/info_page.html"
last_modified_date = models.DateField("最后修改日期")
body = RichTextField(features=['bold', 'italic', 'link', 'ul', 'h3'])
content_panels = Page.content_panels + [
FieldPanel('last_modified_date'),
FieldPanel('body')
]
parent_page_types = ['news.Index']
subpage_types = []
这个模型可以正常工作,所有InfoPages页面都被正确地渲染。但是,我没有发现任何方式来对这些页面进行访问速率限制。如果没有速率限制的功能,那么我将面临DDoS攻击等风险。我在这里忽略了什么?是否有办法实现访问速率限制?或者我需要采取不同的方法来解决这个问题?