“DRF节流”和“Django轴”有什么不同

2024-04-25 08:38:13 发布

您现在位置:Python中文网/ 问答频道 /正文

“Django Rest Framework(DRF)Throttling”可以帮助防止暴力攻击和失败的登录尝试。在

那么为什么我们需要使用“Django axes”、“Django defender”、“Django ratelimit”或类似组件?在

提前谢谢


Tags: djangorest组件frameworkdrfdefenderratelimit暴力
2条回答

DRF提供的节流与身份验证非常不同,后者是Django Axes的重点。在

在DRF中,你可以允许在给定的时间段(比如一天)内访问你的资源(比如一个数据库),在一个给定的时间段内(比如说一天)访问你的资源(比如一个数据库),因此它们被限制到那个速率/周期,这里是100/天。在某些用例中,用户甚至不需要标识自己就可以使用您的服务,不涉及身份验证—在这里,您将用户系统的IP视为限制用户活动的一个关键。是的,您可以在DRF中与身份验证一起运行节流,但其中一个不需要另一个。在

而在Axes中,您主要关心的是让用户通过登录过程来证明其身份(身份验证)。您还可以指示Axes拒绝重复失败的用户进行身份验证的机会,也就是说,如果10次尝试都未能正确登录,则在接下来的5分钟内禁止您登录。因此,通常情况下,未经身份验证的用户将永远无法使用您的服务,并且重复的身份验证失败尝试将导致该IP在较长时间内被拒绝进行身份验证。Axes的重点往往是确定用户为什么无法进行身份验证,以及通过何种方式访问系统。例如,从Axes报告中,您可以使用注册页面中通过电子邮件发送给他们的链接来确定当天登录的用户数。或者哪些用户使用facebook登录,还有多少用户未能登录(例如IP、用户名或电子邮件)。在

此外,DRF实际上是“regulardjango”的一个附加组件,因此它的节流和身份验证是根据它所执行的API服务定制的。使用API的用户通常不太可能手动向API进行身份验证,而是使用一些令牌(JWT、csrf)。Django Axes也是常规Django的一个附加组件,通常通过身份验证用户来满足典型web站点的需求。您可以在同一个django平台上使用这两个服务,DRF和Axes,它们可以很好地协同工作,不会发生冲突。在

据我所知,你提到的那些库都做同样的事情(它们之间有一些不同)。你可以选择最适合你需要的。在

如果您使用的是DRF,那么您不需要一个额外的库(axes、ratelimit等),因为DRF已经内置了节流功能。在

相关问题 更多 >