Я знаю, что есть документация по этому вопросу здесь https://docs.djangoproject.com/en/1.9/topics/auth/customizing/, однако мне нужно уточнить мой вариант использования.Пользовательская аутентификация с пользовательским пользователем в django?
У меня в основном есть api, который я создал. То, что это api делает, представляет данные пользовательской формы на внешний URL-адрес, а после отправки данные сохраняются в эту внешнюю базу данных URL-адресов.
Затем я могу получить конкретного пользователя через другой вызов api. Пользователь возвращается как объект. Теперь я пытаюсь зарегистрировать этого пользователя в моем конце, используя django.contrib.auth через мою систему, но то, что у меня есть, не работает.
Вот мой процесс:
A. Я добавил пользовательский бэкенд аутентификации в мой settings.py файл
AUTHENTICATION_BACKENDS =(
'new_app.backends.SettingsBackend',
'django.contrib.auth.backends.ModelBackend',
)
B. В файле бэкэнд моей new_app, я следующий код:
class SettingsBackend(object):
def authenticate(self, username=None, password=None):
if username and password:
user = api.get_user()
#add pk to user object to satisfy django error warning
user.pk = user.unique_field
return user
return None
def get_user(self, user_id):
try:
if self.user.pk == user_id:
return self.user
except:
return None
в представлении зарегистрировались, я пытаюсь войти пользователю в использовании этого:
def login_user(request, username, password):
from django.contrib import auth
if not username and password:
raise ValueError("Invalid username and password")
auth_user = auth.authenticate(username=username, password=password)
if auth_user is None:
raise ValueError("Invalid username and password")
auth.login(request, auth_user)
return auth_user
я получаю высказывание об ошибке:
'api.get_user()' object has no attribute 'save'
Ошибка, протекающие на auth.login(request, auth_user)
линии.
Я думаю, причина в том, что django.contrib.auth считает, что мой пользовательский объект является моделью django. Итак, вопрос в том, как я должен заниматься этим, чтобы он работал с учетом моего сценария? Спасибо за время.
Вы указали измененную модель пользователя в настройках? – RA123
@ RA123 спасибо за ответ. Я не сделал этого, потому что это не типичная модель пользователя django, поэтому я думал, что это не обязательно. Я чувствую, что я близок, но мне, возможно, не следует использовать django.contrib.auth и сделать свой собственный метод auth, но это то, где мне нужно руководство. – user875139
Пожалуйста, сначала установите AUTH_USER_MODEL = 'user_custom.MyUser', если вы не используете модель пользователя django – RA123