我正在一個項目,我已經創建了新用戶的用戶登錄功能。一旦用戶創建帳戶,我遇到登錄系統問題。用戶登錄系統不哈希和比較密碼與記錄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