有关Django自定义身份验证和登录的错误?

脸颊

我为登录系统创建了一个自定义身份验证后端。当然,当我在python shell中尝试该自定义后端时,它可以工作。但是,在服务器中运行它时出现错误。错误消息为“以下字段在此模型中不存在,或者为m2m字段:last_login”。我是否需要在客户模型中包含last_login字段,或者是否有其他解决方案来解决该问题?这是我的示例代码:

In my models.py

class Customer(models.Model):

  yes_or_no = ((True, 'Yes'),(False, 'No'))
  male_or_female = ((True,'Male'),(False,'Female'))

  name = models.CharField(max_length=100)
  email = models.EmailField(max_length=100,blank = False, null = False)
  password = models.CharField(max_length=100)
  gender = models.BooleanField(default = True, choices = male_or_female)
  birthday = models.DateField(default =None,blank = False, null = False)
  created = models.DateTimeField(default=datetime.now, blank=True)
  _is_active = models.BooleanField(default = False,db_column="is_active")

  @property
  def is_active(self):
    return self._is_active
  # how to call setter method, how to pass value ?
  @is_active.setter
  def is_active(self,value):
    self._is_active = value

  def __str__(self):
    return self.name

在backends.py中

from .models import Customer
from django.conf import settings

class CustomerAuthBackend(object):

    def authenticate(self, name=None, password=None):
        try:
            user = Customer.objects.get(name=name)

            if password == getattr(user,'password'):
                # Authentication success by returning the user
                user.is_active = True
                return user
            else:
                # Authentication fails if None is returned
                return None
        except Customer.DoesNotExist:
            return None

    def get_user(self, user_id):
        try:
            return Customer.objects.get(pk=user_id)
        except Customer.DoesNotExist:
            return None

在views.py中

@login_required(login_url='/dataInfo/login/')
def login_view(request):
    if request.method == 'POST':

        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(name=username,password=password)
        if user is not None:

            if user.is_active:
                login(request,user)
                #redirect to user profile
                print "suffcessful login!"
                return HttpResponseRedirect('/dataInfo/userprofile')
            else:
                # return a disable account
                return HttpResponse("User acount or password is incorrect")
        else:
            # Return an 'invalid login' error message.
            print "Invalid login details: {0}, {1}".format(username, password)
            # redirect to login page
            return HttpResponseRedirect('/dataInfo/login')
    else:

        login_form = LoginForm()
    return render_to_response('dataInfo/login.html', {'form': login_form}, context_instance=RequestContext(request))

在setting.py中

AUTHENTICATION_BACKENDS = ('dataInfo.backends.CustomerAuthBackend', 'django.contrib.auth.backends.ModelBackend',)
v1k45

发生这种情况是因为您正在使用django的login()功能来登录用户。

Django的login函数会发出一个信号user_logged_in,该信号以user您提供实例作为参数命名参见login()源代码

并在django的中收听到此信号contrib.auth.models它尝试更新一个名为的字段,last_login假设您提供的用户实例是django默认AbstractUser模型的子类

为了解决此问题,您可以执行以下操作之一:

  1. 停止使用login()django附带功能,并创建一个自定义功能。
  2. 断开接收器user_logged_in信号update_last_login阅读方法
  3. 添加一个命名last_login为模型的字段
  4. 从django的基本身份验证模型扩展您的模型。阅读方式

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有关Django自定义身份验证和登录的错误?

来自分类Dev

Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

来自分类Dev

Django身份验证自定义

来自分类Dev

具有Django 1.5,自定义字段和共享身份验证的多种用户类型

来自分类Dev

带有Django 1.5,自定义字段和共享身份验证的多种用户类型

来自分类Dev

在自定义登录页面上使用现有Cookie身份验证的身份状态

来自分类Dev

具有3个字段的身份验证和自定义登录表单的Spring Boot安全性

来自分类Dev

无法使用自定义身份验证后端登录

来自分类Dev

自定义身份验证筛选器Wordpress-登录尝试前显示错误消息

来自分类Dev

WordPress自定义登录要求和使用身份验证挂钩的错误消息

来自分类Dev

在Django中使用自定义用户模型登录时的身份验证问题

来自分类Dev

自定义身份验证后,Django的管理员未登录

来自分类Dev

不带formLogin()但具有自定义登录表单的Spring Boot身份验证

来自分类Dev

跳过自定义错误页面的身份验证

来自分类Dev

自定义Firebase身份验证:令牌格式错误

来自分类Dev

创建Firebase身份验证的自定义错误消息

来自分类Dev

如何自定义Django rest框架中的[未提供身份验证凭据]错误消息

来自分类Dev

OWIN身份验证和自定义响应

来自分类Dev

django用户自定义模型身份验证和授权

来自分类Dev

Django,TastyPie,身份验证和自定义中间件令人头疼

来自分类Dev

Django - 自定义身份验证和使用 Managers 的正确方法

来自分类Dev

Firebase-身份验证自定义令牌错误身份验证/网络请求失败

来自分类Dev

具有LDAP身份验证的自定义权限

来自分类Dev

具有自定义JWT身份验证的OAuth

来自分类Dev

Django Rest Framework自定义身份验证+基本身份验证

来自分类Dev

具有Spring Security和Java Config的自定义身份验证提供程序

来自分类Dev

领域对象服务器:使用自定义身份验证成功登录后访问被拒绝错误

来自分类Dev

Laravel自定义身份验证

来自分类Dev

Laravel自定义身份验证

Related 相关文章

  1. 1

    有关Django自定义身份验证和登录的错误?

  2. 2

    Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

  3. 3

    Django身份验证自定义

  4. 4

    具有Django 1.5,自定义字段和共享身份验证的多种用户类型

  5. 5

    带有Django 1.5,自定义字段和共享身份验证的多种用户类型

  6. 6

    在自定义登录页面上使用现有Cookie身份验证的身份状态

  7. 7

    具有3个字段的身份验证和自定义登录表单的Spring Boot安全性

  8. 8

    无法使用自定义身份验证后端登录

  9. 9

    自定义身份验证筛选器Wordpress-登录尝试前显示错误消息

  10. 10

    WordPress自定义登录要求和使用身份验证挂钩的错误消息

  11. 11

    在Django中使用自定义用户模型登录时的身份验证问题

  12. 12

    自定义身份验证后,Django的管理员未登录

  13. 13

    不带formLogin()但具有自定义登录表单的Spring Boot身份验证

  14. 14

    跳过自定义错误页面的身份验证

  15. 15

    自定义Firebase身份验证:令牌格式错误

  16. 16

    创建Firebase身份验证的自定义错误消息

  17. 17

    如何自定义Django rest框架中的[未提供身份验证凭据]错误消息

  18. 18

    OWIN身份验证和自定义响应

  19. 19

    django用户自定义模型身份验证和授权

  20. 20

    Django,TastyPie,身份验证和自定义中间件令人头疼

  21. 21

    Django - 自定义身份验证和使用 Managers 的正确方法

  22. 22

    Firebase-身份验证自定义令牌错误身份验证/网络请求失败

  23. 23

    具有LDAP身份验证的自定义权限

  24. 24

    具有自定义JWT身份验证的OAuth

  25. 25

    Django Rest Framework自定义身份验证+基本身份验证

  26. 26

    具有Spring Security和Java Config的自定义身份验证提供程序

  27. 27

    领域对象服务器:使用自定义身份验证成功登录后访问被拒绝错误

  28. 28

    Laravel自定义身份验证

  29. 29

    Laravel自定义身份验证

热门标签

归档