" DRF Throttling"之间有什么不同?和" Django Axes"

时间:2018-04-18 10:44:08

标签: python django django-rest-framework

" Django-Rest-Framework(DRF)限制"可以帮助防止暴力攻击和登录尝试失败。

那么为什么我们需要使用" Django轴"," Django后卫"," django-ratelimit"或类似的组件?

提前致谢

2 个答案:

答案 0 :(得分:4)

DRF提供的节流与Authentication(身份验证)有很大不同,后者是Django Axes的重点。

在DRF中,您可以允许在给定的时间段(假设是一天)中定义的时间段(即100次数据库查询)访问资源(例如数据库),因此将它们限制在该速率/期间, 100 /天。在某些用例中,用户甚至不必为了使用您的服务就必须标识自己,不涉及身份验证-在这里,您将用户系统的IP视为限制用户活动的关键。是的,您可以将限制与DRF中的身份验证一起运行,但是一个不需要另一个。

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

此外,DRF实际上是“常规django”的附加组件,因此它的调节和身份验证是针对其执行的API服务量身定制的。使用API​​的用户通常不太可能手动进行身份验证。 Django Axes还是常规django的附加组件,通常通过验证用户身份来满足典型网站的需求。您可以在一个django平台上同时使用DRF和Axes服务,它们可以很好地协同工作,并且不会发生冲突。

答案 1 :(得分:1)

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

如果您使用DRF,那么您不需要一个附加库(axis,ratelimit等),因为DRF已经内置了限制功能。