使用mysqll进行django电子邮件身份验证

时间:2020-06-07 16:37:45

标签: python django

我的代码无法正常工作,它永远不会登录我,但运行时不会出现错误,我正在使用mysql数据库,我尝试了很多方法来解决它,但是由于我是python Web编程的新手,所以我无法解决它。

views.py

from django.shortcuts import render
from django.contrib.auth import authenticate
from Play.models import user
from django.contrib.auth.models import User
from django.contrib.auth.models import auth
from django.shortcuts import redirect
from django.shortcuts import HttpResponse
from django.contrib.auth.hashers import make_password

def JoinRequest(request):

    if request.method == 'POST':
        fullname = request.POST['fullname']
        email = request.POST['email']
        phone = request.POST['phone']
        password = request.POST['password']
        cpassword = request.POST['cpassword']

        #encpass = make_password(password)

        def get_client_ip(request):
            x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
            if x_forwarded_for:
                ip = x_forwarded_for.split(',')[-1].strip()
            else:
                ip = request.META.get('REMOTE_ADDR')
            return ip

        if password != cpassword:
            return HttpResponse('Password Not Matching To Confirm Password Value..')

        else:
            senddata = user(fullname=fullname, email=email, phone=phone, password=password , ipaddress=get_client_ip(request))
            senddata.save()


            return HttpResponse('')



def Join_View(request):
    return render(request, 'Join.html', {})

def login_view(request):
    return render(request, 'Login.html', {})


def LoginREQUEST(request):

    if request.method == 'POST':
        username = request.POST['email']
        password = request.POST['password']

        user = auth.authenticate(username=username, password=password)

        if user is not None:

            auth.login(request, user)
            return HttpResponse('DONE')
        else:
            return HttpResponse("NONE")

EmailAuthentication.py

from django.contrib.auth import get_user_model
from django.http import HttpResponse
from django.contrib.auth.backends import ModelBackend as _ModelBackend

User = get_user_model()


class EmailOrUsernameModelBackend(_ModelBackend):
    """ Authenticate user by username or email """

    def authenticate(self, username=None, password=None):
        try:
            user = User.objects.get(email=username)
            if user.check_password(password):
                return user
            else:
                return None
        except User.DoesNotExist:
            return None

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

Settings.py

AUTHENTICATION_BACKENDS = [
    'Accounts.EmailAuthentication.EmailOrUsernameModelBackend',
]

代码工作正常,因为我正在从ajax请求发送数据,正在将数据毫无问题地获取到函数中,但是代码从未找到行处理到给定的电子邮件和密码。

0 个答案:

没有答案