Даже если пароль неверен, пользователь подтверждается и проходит проверку подлинности в django
Я использую API landsatxplore для загрузки спутниковых снимков и теперь создаю веб-приложение для этого, используя тот же API в Django.
В простом скрипте python.
from landsatxplore.api import API
username = 'username'
password = 'password'
api = API(username, password)
если имя пользователя и пароль верны, то создается экземпляр API/ключ, а если имя пользователя и пароль неверны, то возникает исключение:
landsatxplore.errors.USGSAuthenticationError: AUTH_INVALID: User credential verification failed.
Я пробую ту же логику в Django, но даже если я ввожу неправильное имя пользователя и пароль, он проходит аутентификацию и отправляет меня на следующую страницу homepage.html, которая должна быть доступна только при правильном имени пользователя и пароле.
views.py
from landsatxplore import errors
from django.shortcuts import render,redirect
from django.contrib import messages
from landsatxplore.api import API
# Create your views here.
def index(request):
username = request.POST.get('username')
password = request.POST.get('password')
if username == None or password == None:
messages.info(request,"please Enter the username and password")
else:
try:
# Initialize a new API instance and get an access key
api = API(username, password)
except errors.USGSUnauthorizedError:
messages.info(request,"Username and password is wrong")
else:
return render(request,"homepage.html")
return render(request, 'index.html')
def homepage(request):
return render(request,'homepage.html')
HTML:
{% for message in messages %}
<p>{{message}}</p>
{% endfor %}
<form method ="POST" action = "homepage">
{% csrf_token %}
<p>Username:</p>
<input type = "text" name ="username">
<p>Password:</p>
<input type="text" name = "password">
<br>
<input type="submit" value = "Submit">
</form>
Новый Views.py
def login(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
if not username or not password:
return redirect('/')
else:
try:
# Initialize a new API instance and get an access key
api = API(str(username), str(password))
except errors.USGSAuthenticationError:
messages.info(request,"Username and password is wrong")
return render(request,"register.html")
else:
return render(request,"homepage.html")
return render(request,"login.html")