Я пытаюсь создать пользовательскую форму входа для аутентификации на удаленном сервере, поэтому мне нужно создать пользовательскую форму входа. Я создал пользователя с username = 'test3', password = 'test' в django-shell. Когда я пытаюсь использовать функцию аутентификации, я всегда получаю None. Когда я пытаюсь войти с тем же именем пользователя и паролем, я могу войти в систему. Я могу исключить следующие возможные ошибки: - «django.contrib.auth.backends.ModelBackend» указана в MIDDLEWARE_CLASSES:django authenticate() allways возвращает None
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.auth.backends.ModelBackend',
)
- Пароль хранится в виде хэша (я проверил его с SQLite-браузер)
User.objects.get(username='test3').check_password('test')
возвращает Истинные- Я SyncDB, мигрировать и makemigrations после активации аутентификации-бэкенд
Я использую django 1.8 В принципе, мне нужны только данные сеанса, потому что пользователи хранятся в другом месте.
Этим утром, я понял, что проблема только решена частично: - аутентификации() работает в оболочке - на мой взгляд, я могу получить пользователя и успешно проверить свой пароль Но опять же, когда я пытаюсь для использования функции authenticate() в моем представлении, я получаю объект None-type. Я даже удалил базу данных, но поведение по-прежнему остается прежним. Мой settings.py:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
#'django.contrib.auth.middleware.RemoteUserMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.staticfiles.finders.FileSystemFinder',
)
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
#'django.contrib.auth.backends.RemoteUserBackend',
)
просмотров: от django.contrib.auth.models импорта пользователя из django.contrib.auth импорта аутентификации
def authentifizieren(request):
"""
"""
if request.method == 'POST':
uname = request.POST['username']
passwd = request.POST['password']
dbuser = User.objects.get(username=uname)
dbuvalid=dbuser.check_password(passwd)
auser = authenticate(username=uname, password=passwd)
print('***************************************', dbuser,dbuvalid)
print('***************************************', auser)
if (auser != None):
login(request, auser)
return redirect('/startseite')
выход:
*************************************** test True
*************************************** None
Я также жестко закодировал строки user/password, чтобы исключить проблему, связанную с кодировкой, но без успеха.
Эта проблема возникает только в оболочке или же в представлении? И вы используете 'authenticate (username = 'test3', password = 'test')'? Где вы импортируете 'authenticate()' from? – Jkdc
, пожалуйста, отправьте MCVE –
из django.contrib.auth import authenticate – Sascha