【发布时间】:2016-05-27 23:28:29
【问题描述】:
所以我尝试在我的视图中使用身份验证方法,但总是返回“不存在”,我正在为我的密码字段使用 MD5 哈希,所以我不知道这是否是问题
forms.py
class LoginForm(forms.Form):
email = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput)
#This Method Hash the password
def clean_password(self):
clearPassNoHash = self.cleaned_data['password']
self.password = md5.new(clearPassNoHash).hexdigest()
return self.password
views.py
def auth_login(request):
args = {}
form = LoginForm(request.POST)
email = request.POST['email']
password = request.POST['password']
user = authenticate(email=email, password=password)
if user is not None:
login(request, user)
print("Exist")
else:
print("Does not exist")
我已经尝试过实际有效的 check_password() 方法(在我的表单中) 但我不知道为什么我在使用 authenticate() 时遇到问题
------------------更新--------- ----------------------
Views.py
def auth_login(request):
args = {}
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
print("existe")
print user
else:
print user
args['form'] = form
return render(request, 'login/login.html', args)
forms.py
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
其他观察: 我的 settings.py 中有这个来使用我的自定义模型
AUTH_PROFILE_MODULE = 'StudentUsers.StudentRegistration'
这是我添加到模型中的用户名字段:
class StudentRegistration(AbstractBaseUser, models.Model):
username = models.CharField(max_length = 25, null=False, default="", unique=True)
【问题讨论】:
-
这个认证方法是什么?用户真的存在吗?你真的应该在检查 form.is_valid() 之后使用 form.cleaned_data
-
authenticate(email=email, password=password),是的,我的用户存在
-
从您的问题中可以清楚地看出您正在调用身份验证方法。我的问题是该身份验证方法到底是什么?它来自哪里?
标签: python django hash django-forms django-views