Python 来自custome表(mysql)的凭据的Django登录身份验证不起作用
我正在尝试使用mysql数据库中的凭据登录,但它不起作用。它适用于管理员凭据 views.pyPython 来自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
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表中的电子邮件和密码登录。因此,在这样做时,我无法登录。。。。