Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自custome表(mysql)的凭据的Django登录身份验证不起作用_Python_Django_Authentication - Fatal编程技术网

Python 来自custome表(mysql)的凭据的Django登录身份验证不起作用

Python 来自custome表(mysql)的凭据的Django登录身份验证不起作用,python,django,authentication,Python,Django,Authentication,我正在尝试使用mysql数据库中的凭据登录,但它不起作用。它适用于管理员凭据 views.py def logauth(request): if request.method == "POST": username = request.POST['username'] password = request.POST['password'] user = authenticate( username=user

我正在尝试使用mysql数据库中的凭据登录,但它不起作用。它适用于管理员凭据

views.py

 def logauth(request):
        if request.method == "POST":
            username = request.POST['username']
            password = request.POST['password']
            user = authenticate( username=username, password=password)

            if user is not None:
                messages.error(request, 'if part : user is not  None')
                login(request, user)
                messages.error(request, '111')
                return redirect('emp')
            else:
                messages.error(request, 'else part : user is None')
                return redirect('login_url')
        else:
            messages.error(request, 'Please provide valid credentials')
            return render(request, 'registration/login.html')
def logauth(request):
    if request.method == "POST":
        email = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, email=email, password=password)

        if user is not None:
            messages.error(request, 'if part : user is not  None')
            login(request, user)
            return redirect('emp')
        else:
            messages.error(request, 'else part : user is None')
            return redirect('login_url')
    else:
        messages.error(request, 'Please provide valid credentials')
        return render(request, 'registration/login.html')
models.py

  class RegAuth(AbstractBaseUser):
        username = models.CharField(max_length=255)
        email = models.EmailField(unique="TRUE")
        password = models.CharField(max_length=255)
        mobile = models.CharField(max_length=12)
        registrationDate = models.DateTimeField(auto_now_add=True)
        last_login = models.DateTimeField(auto_now_add=True)

        objects = UserManager()

        is_anonymous = "FALSE"
        is_authenticated = "TRUE"

        is_active = False
        is_superuser = True

        USERNAME_FIELD = "email"
        REQUIRED_FIELDS = ["username", "mobile"]

        class Meta:
            db_table = "bloggerauth"

        def __str__(self):
            return self.email
setting.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'jayesh',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

AUTHENTICATION_BACKENDS = ('polls.backends.MyBackEnd', 'django.contrib.auth.backends.ModelBackend', )

您必须在“身份验证”功能中传递电子邮件,而不是用户名:

user = authenticate(email=email, password=password)
因为您已将
USERNAME\u字段
定义为电子邮件:

USERNAME_FIELD = "email"
views.py

 def logauth(request):
        if request.method == "POST":
            username = request.POST['username']
            password = request.POST['password']
            user = authenticate( username=username, password=password)

            if user is not None:
                messages.error(request, 'if part : user is not  None')
                login(request, user)
                messages.error(request, '111')
                return redirect('emp')
            else:
                messages.error(request, 'else part : user is None')
                return redirect('login_url')
        else:
            messages.error(request, 'Please provide valid credentials')
            return render(request, 'registration/login.html')
def logauth(request):
    if request.method == "POST":
        email = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, email=email, password=password)

        if user is not None:
            messages.error(request, 'if part : user is not  None')
            login(request, user)
            return redirect('emp')
        else:
            messages.error(request, 'else part : user is None')
            return redirect('login_url')
    else:
        messages.error(request, 'Please provide valid credentials')
        return render(request, 'registration/login.html')
backends.py

class MyBackEnd(object):

    def authenticate(self, request, email=None, password=None):
        existing_user = RegAuth.objects.get(email=email,password=password)
        if not existing_user:
            # Checking the user UserData Custom DB.
            user_data = RegAuth.objects.get(email=email,password=password)
            if email == user_data.email:
                user = RegAuth.objects.create_user(email=email, password=password)
                user.save()
                return user
            else:
                return None
        else:
            return existing_user

    def get_user(self, email):
        try:
            return RegAuth.objects.get(email=email)
        except Exception as e:
            return False

您是否在设置中添加了AUTH_USER_MODEL='polls.RegAuth'您所说的“使用mysql数据库中的凭据”是什么意思?这些凭证是如何创建的?当你说“它不起作用”时,到底是什么行为?身份验证失败?您在模型集中看到一个错误,即
处于活动状态=真
,并且保持
处于超级用户状态=假
。因为您不想让每个创建的用户都成为超级用户。@dirkgroten我有一个注册模块,它将用户的详细信息保存在mysql表中。现在我正在尝试使用保存在mysql表中的电子邮件和密码登录。因此,在这样做时,我无法登录。。。。