我正在一个项目,我已经创建了新用户的用户登录功能。一旦用户创建帐户,我遇到登录系统问题。用户登录系统不哈希和比较密码与记录Django
问题是,当创建新帐户时,django会对密码进行散列处理。我认为,当我尝试登录其中一个帐户时,它不会散列密码,然后检查密码是否匹配。
那是正在发生的事情或者是说我所做的东西..
这里是views.py文件:
def login_page(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
username = cd['username']
password = cd['password']
valid_user = User.objects.get(username=username)
if valid_user:
if password == valid_user.password:
request.session['username'] = username
return redirect('/')
else:
message = 'Password does not match the username'
else:
message = 'Invalid Username'
parameters = {
'message':message,
'form':form,
}
return render(request, 'tabs/login.html', parameters)
else:
form = LoginForm()
message = 'Login Below'
parameters = {
'form':form,
'message':message,
}
return render(request, 'tabs/login.html', parameters)
HTML文件:
{% extends "base.html" %}
{% block content %}
<h1>Login</h1>
<p>{{ message }}</p>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="submit" value="submit">
</form>
{% endblock %}
形式.py文件:
class LoginForm(forms.Form):
username = forms.CharField(max_length=22)
password = forms.CharField(max_length=22, widget=forms.PasswordInput)
下面是一些我创建的用户和密码...
steven -- pbkdf2_sha256$20000$z2DdGDm5D8Yu$v0nwWWj/2qslNUUTmYMd1ePBqyjpHoWM76AY5k11f9o=
josh -- pbkdf2_sha256$20000$cMy01yE10w7I$O39pRqQsb/se+E8ttvEn9JRlb8qB4xrfS1GRKQKHA2Q=
Moe -- pbkdf2_sha256$20000$hJysyabGcxpP$As4cvzWu2x+YjJ4RvP8EjS2dxhusQwuTlPvS7av35Ys=
omarjandali -- hellohello
问题。我在创建帐户时以及用户登录时所做的操作,它将用户名保存在会话中,并且在他们注销时将用户名带出会话,并且每个页面都会检查用户名是否在会话中。是该方法或更好地在django中使用auth.login方法... –
另外如果我使用auth.authentication @Simplans –
什么将是导入语句如果你想检查用户是否登录或不使用此代码“如果request.user.is_authenticated():” – Simplans