django应用程序,在多次登录失败后锁定用户。
django-cerberus的Python项目详细描述
django应用程序,在多次登录尝试失败后锁定用户,直到释放时间到期。
在Django 1.4.5测试。
要求
- Django
安装
- 使用pip安装python库:pip install django cerberus
- 将cerberus添加到django设置文件中的INSTALLED_APPS。
- 同步数据库
用法
将cerberus.decorators.watch_loginsdecorator添加到登录视图中。示例:
class LoginView(FormView): template_name = 'example/login.html' form_class = AuthenticationForm @method_decorator(watch_logins) def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated(): return redirect(settings.LOGIN_REDIRECT_URL) return super(LoginView, self).dispatch(request, *args, **kwargs) def form_valid(self, form): user = form.get_user() login(self.request, user) return super(LoginView, self).form_valid(form) def get_success_url(self): return reverse('logged_in')
设置
- cerberus_max_尝试次数
- 最大登录失败次数。默认值:5.
- cerberus锁定时间
- 忘记失败登录尝试后的秒数(秒)。默认值:600.
型号
每个锁定模型实例都包含用户名、登录失败次数、IP地址、用户代理详细信息, 获取和发布参数,锁定时的信息(用户至少尝试使用错误的凭据登录 CERBERUS_MAX_ATTEMPTS次)以及锁定是否过期(基于CERBERUS_LOCKOUT_TIME)。
模板
如果愿意,可以重写cerberus/lockout.html模板。存在lockout实例和lockout_time变量 (cerberus锁定时间)在模板上下文中可用。