У меня очень маленькое приложение Django, в основном для обучения. Я использую встроенную модель User, предоставленную Django. Чтобы узнать о функциональности, я создал страницы, которые позволяют мне создавать и редактировать пользователей без необходимости перехода на панель администратора.Проверка правильности пароля (Django/Python)
Страница регистрации позволяет мне очень легко проверять такие вещи, как пароль и срок действия электронной почты, так как при отправке POST на просмотр я просто использую user_form.is_valid()
, чтобы проверить правильность полей (имя пользователя меньше 30 символов, пароль меньше 128, другие условия ...).
Для моей страницы редактирования я хотел сделать контент более отзывчивым, поэтому я использовал AJAX-запросы через JQuery, позволяя выполнять действия без перезагрузки страницы. Это прекрасно работает, но это не оставляй меня с проблемой проверки достоверности, так как я не посылая форму, я только с помощью Javascript, чтобы выбрать запросы и отправить их в запросе AJAX как таковой:
$.get('/dms/edit_user_changeuser/', {inputNameSend : $("#inputname").val(), usernameToSend : $("#usernameID").val(), emailToSend : $("#emailID").val(),passwordToSend : $("#passwordID").val(), disabledToSend : checkedVal}, function(data){
if(data != "success"){
$("#errorDisplay").show();
}else{
$("#savedDisplay").show();
$("#user_form").hide();
}
});
И это, как ассоциированная View обрабатывает его:
@login_required
def user_edit_changeuser(request):
# Like before, get the request's context.
context = RequestContext(request)
inputname = request.GET['inputNameSend']
newUsername = request.GET['usernameToSend']
newEmail = request.GET['emailToSend']
newPassword = request.GET['passwordToSend']
if(request.GET['disabledToSend'] == "true"):
disabledBool = False
else:
disabledBool = True
try:
user_obj = User.objects.get(username=inputname)
print("retUser")
user_obj.username = newUsername
user_obj.email = newEmail
user_obj.is_active = disabledBool
user_obj.set_password(newPassword)
user_obj.save()
print(str(disabledBool))
return HttpResponse("success")
except Exception, e:
return HttpResponse(str(e))
это все работает, предполагая, вход правилен, но есть что-то вроде User.checkValidPassword(newPassword)
вручную проверить действительность?
https://docs.djangoproject.com/en/1.3/topics/auth/#manually-checking-a-user-s-password – dm03514