我有一个登录网页,可以正确验证用户身份。当登录页面接受用户信息并将其发送到默认登录页面时,django会正确获取用户信息并相应地填充页面。
此外,当从另一个django的网页发送到登录页面,或以用户身份登录时,django将自动正确地重定向到默认页面。
但是,在我以标准用户身份登录后,通过在浏览器的地址栏中输入127.0.0.1:8000/login/
或链接到此页面进入登录页面,
request.user.is_authenticated()
将始终返回False
。
为什么会这样?如何以超级用户身份登录时不会发生这种情况?
编辑:
这是views.py中的代码:
if request.user.is_authenticated():
#redirect to logged in page
if request.method == "POST":
email = request.POST.get("email_input")
password = request.POST.get("password_input")
users = UserProfile.objects.all() # FIXME: Inefficient GET request
for user in users:
if user.user.email == email and check_password(password, user.user.password):
login(request, authenticate(username=email, password=password))
#go to logged in page
return render(request, "login/login.html", {"error_message": "Invalid email/password combination. Please retry",
"email": email})
return render(request, "login/login.html")
答案 0 :(得分:0)
这是一个有趣的实现。我建议您使用documentation中所述的内容:
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
else:
# Return a 'disabled account' error message
else:
# Return an 'invalid login' error message.