基于缓存的django应用程序,在多次登录失败后锁定用户。

django-lockout的Python项目详细描述


django-lockout是一个基于缓存的django应用程序,在 许多登录尝试失败。因为django-lockout跟踪登录尝试 在你的网站缓存中,它是快速和轻量级的。是为Django准备的 在没有暴力攻击的情况下 额外的数据库开销。

django-lockout包装django.contrib.auth.authenticate并引发 lockout.LockedOut出现过多登录尝试。你的观点是 负责捕获和处理LockedOut,不管您认为是什么 适当的。django-lockout的中间件类存储请求对象 在线程本地名称空间中提供包装的auth.authenticate 函数访问它。

登录尝试可由IP Only或IP Plus用户代理跟踪。

要求

django-lockout是为django 1.3设计的。它也适用于django 1.0, 1.1和1.2,除了测试套件(它依赖于 django.test.client.RequestFactory)。如果将django-lockout与 早于1.3的django版本,不应将'lockout'添加到 INSTALLED_APPS

django-lockout要求您为站点启用了缓存。

安装

您可以使用以下命令安装django-lockout

pip install django-lockout

或:

easy_install django-lockout

'lockout.middleware.LockoutMiddleware'添加到MIDDLEWARE_CLASSES中。 它应该出现在django的AuthenticationMiddleware

MIDDLEWARE_CLASSES = [
    'lockout.middleware.LockoutMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    ...
    ]

仅当您希望将'lockout'添加到INSTALLED_APPS时才需要 运行django-lockout的测试套件。

用法

下面是一个如何使用django-lockout

try:
    user = auth.authenticate(username=username, password=password)
except LockedOut:
    messages.warning(request, 'Your account has been locked out because of too many failed login attempts.')

如果需要清除IP或IP Plus的失败尝试记录 用户代理,调用lockout.reset_attempts,为此传递request。 IP或IP Plus用户代理:

reset_attempts(request)

设置

锁定最大尝试次数
在IP或IP加上用户代理之前的最大登录尝试次数 被锁在外面。默认值:5.
锁定时间
应锁定IP或IP Plus用户代理的秒数。 默认值:600(10分钟)。
锁定执行窗口

重置失败登录尝试之前的秒数,以及 IP或IP Plus用户代理有了新的开始。默认值:300(5分钟)。

LOCKOUT_ENFORCEMENT_WINDOW最多影响失败的登录尝试 允许,而LOCKOUT_TIME在最大尝试次数为 达到。例如,如果LOCKOUT_ENFORCEMENT_WINDOW为5分钟, 假设用户的登录尝试失败,然后是另一个失败 3分钟后尝试登录。两次尝试都将计入 最大值。但是,如果5分钟标记(从第一次失败的尝试开始)是 如果尝试次数少于允许的最大次数,则失败将过期 并且用户将再次允许最大尝试。如果用户 超过LOCKOUT_ENFORCEMENT_WINDOW内的最大值,用户将 锁定LOCKOUT_TIME秒。

锁定用户代理
是否跟踪IP Plus用户代理的失败登录尝试,而不是 仅限IP。默认值:False.
锁定缓存前缀
django-lockout生成的缓存键的前缀。默认值:'lockout'.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在AlertDialog builder标题右侧放置图标   安装weblogic server12时发生java获取错误。1在windows 10上   java无法导入:安卓。支持v7。小装置。Android Studio中的RecyclerView   java Android应用程序等待通知奇怪行为   java如何比较ArrayList中的整数元素?   java Quartz属性不会触发Quartz作业   java轻松地将许多JavaFX属性绑定到UINode   Maven插件管理器导致java错误消息的原因是什么?   JAXB解组错误后java文件被阻止   java如何在spark kafka流中创建消费者组并将消费者分配给消费者组   java Gps lat&long随机显示非常不准确的结果   java使用assest文件夹文件在Android上执行shell命令   java如何在客户端使用javascript提取文本   java扩展描述的distincts之和   java重写默认Spring数据REST配置   java SQL未命名参数语法   二进制搜索任务的java真实解决方案   java在一个多模块多数据源项目中,用什么正确的方式来指示将哪个数据源注入我的DAOs?