使用post请求登录/检查Django网站数据库中的用户名和密码
我已经创建了一个博客网站,在这里我想登录一个用户,其用户名和密码保存在一个名为“myuser”的数据库表中。我已经在我的函数中从post请求中获取了用户名和密码使用post请求登录/检查Django网站数据库中的用户名和密码,django,python-3.x,django-models,django-views,django-authentication,Django,Python 3.x,Django Models,Django Views,Django Authentication,我已经创建了一个博客网站,在这里我想登录一个用户,其用户名和密码保存在一个名为“myuser”的数据库表中。我已经在我的函数中从post请求中获取了用户名和密码 现在,如何从已创建的表值中比较此值以检查用户名和密码是否正确?您可以通过从模型类导入模型来检查用户 from django.contrib.auth.models import User bool_answer = User.objects.filter(yourtablefield="yourusername").exists()
现在,如何从已创建的表值中比较此值以检查用户名和密码是否正确?您可以通过从模型类导入模型来检查用户
from django.contrib.auth.models import User
bool_answer = User.objects.filter(yourtablefield="yourusername").exists()
若bool_的答案为真,那个么这意味着用户存在其他方面的错误
{% if request.session.isLoggedIn %}
{{request.session.username}}
{% else if not request.session.isLoggedIn %}
<p>User not in session or logged off</p>
{% endif %
{%if request.session.isLoggedIn%}
{{request.session.username}
{%else如果不是request.session.isLoggedIn%}
用户未在会话中或已注销
{%endif%
您无法手动检查密码。因为在创建用户时,django将用户密码作为哈希值存储在数据库中。现在,如果您将原始密码存储在自定义表中,即myuser
,这不是一个好的做法
因为如果有人访问了你的数据库,他也可以看到这些表。他会发现什么?所有用户宝贵的、美味的密码
如果您存储的是原始密码,即mypassword12345
,他刚刚得到了实际密码。如果您使用默认的django方法,django将如下存储密码:jkashdu12321kandsxn!312nasdkhj
,例如,这是您的mypassword12345
的哈希值。现在攻击者将看到密码为用户名
和密码
,并且您想要检查用户是否存在时,您可以按照@MalikFaiq的建议进行操作,即:
from django.contrib.auth.models import User
check_if_user_exists = User.objects.filter(yourtablefield="yourusername").exists()
现在,如果检查\u user\u是否存在
为true,则表示您的表中有一个使用此用户名的用户。如果为false,则表示没有用户
现在,您需要检查此用户是否为您提供了正确的密码。您可以通过执行以下操作进行检查:
if check_if_user_exists:
user = authenticate(request, username=username, password=password)
if user is not None:
# this user is valid, do what you want to do
else:
# this user is not valid, he provided wrong password, show some error message
else:
# there is no such entry with this username in the table
希望有帮助。你不应该自己储存用户名/密码
from django.http import HttpResponseForbidden
from django.contrib.auth import authenticate
# Authenticate
user = authenticate(username=username, password=password)
if user is None:
return HttpResponseForbidden()
else:
# Ready for operation
...
也许可以帮助你。请使用Django的身份验证-如果你自己编写,那么它可能是不安全的。例如,你可能没有像你应该的那样在
myuser
表中对密码进行加密和散列。是的,我不会使用密码进行加密,但这不是问题,我正在学习Django,并想将这些细节与m进行比较y表不是现有的表我想比较用户名和密码如何做,以及如何指定哪个表用于身份验证您无法匹配密码,因为django对密码应用加密。django在auth模块的用户模型中存储用户详细信息。实际上,我使用自己的表存储用户信息,我认为您可以I don’我不理解我的查询,喜欢这个评论。它帮助我快速向网站添加功能。对于任何想知道..来自django.contrib.auth import的人,请验证对于想知道下一步是什么的人:如果用户:登录(请求,用户=用户);返回HttpResponse('Logged in!',状态=200)
在此之后,@login\u enabled
将起作用。
from django.http import HttpResponseForbidden
from django.contrib.auth import authenticate
# Authenticate
user = authenticate(username=username, password=password)
if user is None:
return HttpResponseForbidden()
else:
# Ready for operation
...