До сих пор я использовал стандартную аутентификацию django и метод входа для кода входа в систему для моего проекта. См. Код ниже,
«мой код входа»
def login(request):
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
if(len(username.strip(' ')) == 0):
return render_to_response('login.html', {'error_message': 'Username should not be empty', 'username': username}, context_instance=RequestContext(request))
if(len(password.strip(' ')) == 0):
return render_to_response('login.html', {'error_message': 'Password should not be empty', 'username': username}, context_instance=RequestContext(request))
authuser = authenticate(username=username, password=password)
if authuser and authuser.is_active:
try:
login(request, authuser)
except (RuntimeError, TypeError, NameError):
errmessage = ERROR_MESSAGE % (RuntimeError, TypeError, NameError)
CapturLog().logdata(request, 'LoginError', 'Login', errmessage)
else:
CapturLog().logdata(request, 'Login', 'Login', 'Successfully Logged In')
return HttpResponseRedirect(reverse('index:home'))
else:
return render_to_response('login.html', {'error_message': 'Invalid User', 'username': username}, context_instance = RequestContext(request))
return render_to_response('login.html', context_instance=RequestContext(request))
Этот код работает хорошо, но я не хочу использовать метод по умолчанию в django. Вместо этого я хочу использовать свой собственный метод для проверки подлинности и входа в систему. Это возможно или нет?Я добавил несколько строк в вышеприведенные коды для аутентификации, как показано ниже:
authuser = _authenticate_check(username, password)
def _authenticate_check(username=None, password=None):
try:
if '@' in username:
user = User.objects.get(email=username)
else:
user = User.objects.get(username=username)
except User.DoesNotExist:
return None
# now check the password
if user.check_password(password):
return user
Тогда, если я попытаюсь ввести login(request, user)
, это не сработает.В этой строке отображается сообщение об ошибке (т. Е. Сервер не найден).
Можно ли написать ручной код для аутентификации и входа в систему вместо использования метода по умолчанию, используемого django?
Заранее спасибо!