存储失败身份验证的特殊数据

时间:2014-05-09 22:31:49

标签: python django django-authentication django-signals django-contrib

我编写简单的Django项目,我想在登录尝试失败时存储客户端IP和日期。我准备模型:

class FailIp(models.Model):

    ip = models.CharField(
        max_length=16,
        verbose_name=_(u'fail login ip'),
    )
    date = models.DateTimeField(default=datetime.now)

但我不知道如何挂钩登录错误。网址:

url(
    r'^login/$',
    'django.contrib.auth.views.login', {
        'template_name': 'login.html'
    },
    name='login'
),

怎么做?

1 个答案:

答案 0 :(得分:2)

这是django.contrib.auth.signals.user_login_failed信号的一个非常好的用例 - 在Django 1.5中引入,当用户无法成功登录时发送:

from django.contrib.auth import signals

def listener_login_failed(sender, credentials, **kwargs):
    # handle log in failure

signals.user_login_failed.connect(listener_login_failed)

另见tests for django.contrib.auth.signals