【问题标题】:Do I need custom backend for django If my User model is custom?如果我的用户模型是自定义的,我是否需要 django 的自定义后端?
【发布时间】:2016-06-29 04:53:18
【问题描述】:

一个简单的问题。我已经用它的经理实现了一个自定义用户模型。注册工作很好,但每当用户登录时,它都会显示 AnonymousUser。这是否意味着我需要实施 cutsom 后端什么的?如果是的话,谁能给我一个自定义用户模型的自定义后端示例。 亲切的问候 编辑:这是我的设置文件

  INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'custom_user' ,
       ]

     ROOT_URLCONF = 'jam.urls'



     WSGI_APPLICATION = 'jam.wsgi.application'
    AUTHENTICATION_BACKENDS = ('custom_user.backends.ClientAuthBackend', 'django.contrib.auth.backends.ModelBackend')

  DATABASES = {
       'default': {
             'ENGINE': 'django.db.backends.mysql',
             'NAME':'test3',
             'USER':'root',
             'PASSWORD':'',
         }
     }

      AUTH_USER_MODEL='custom_user.EmailUser'


   LANGUAGE_CODE = 'en-us'

   TIME_ZONE = 'UTC'

   USE_I18N = True

   USE_L10N = True

   USE_TZ = True


   STATIC_URL = '/static/'

这是 backends.py

class ClientAuthBackend(object):
   def authenticate(self, username=None, password=None):
                try:
                    user = EmailUser.objects.get(email=username)
                    if EmailUser.check_password(password, user.password):
                            return user
            except EmailUser.DoesNotExist:
                    return None
    def get_user(self, user_id):
            try:
                    return EmailUser.objects.get(pk=user_id)
            except EmailUser.DoesNotExist:
                    return None

【问题讨论】:

    标签: django customization backend


    【解决方案1】:

    快速回答 - 不,您不需要自定义后端。如果要更换用户模型,you need to setAUTH_USER_MODEL = 'yourapp.YourUserModel'

    如果您想在身份验证(也可能是其他原因)周期中更改某些内容,则需要自定义后端。例如针对电子邮件而不是用户名等进行身份验证...

    【讨论】:

    • 我确实设置了 AUTH_USER_MODEL,但是每当我登录用户时,身份验证都会磨损,这表明用户是匿名的
    • @AlbertStepanyan 那么您的数据可能来自 django 的用户模型?
    • 不,它来自简单的登录表单,我也尝试了自定义后端,但即使它没有解决问题
    • @AlbertStepanyan 你能分享更多相关的代码吗?因为doniyor所说的是正确的,您可能可以共享您的设置文件
    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2013-01-16
    • 2017-06-17
    • 2014-01-31
    • 2019-05-29
    • 2010-10-11
    相关资源
    最近更新 更多