Я пытаюсь внедрить систему единого входа, извлекая все права на авторизацию от SAML ответа:Джанго - Логин пользователя без модели
class SAMLServiceProviderBackend(object):
def authenticate(self, saml_authentication=None):
if not saml_authentication: # Using another authentication method
return None
if saml_authentication.is_authenticated():
attributes = saml_authentication.get_attributes()
user = User(username=saml_authentication.get_nameid())
user.first_name = attributes['givenName']
user.last_name = attributes['sn']
return None
в представлениях я получил что-то вроде
...
user = authenticate(saml_authentication=auth)
login(self.request, user)
...
login
терпит неудачу, потому что отсутствующего метода save()
. Единственный способ - унаследовать от User
и переопределить метод save
. Попытка этого, я получил следующие ошибки: is_authenticated
, get_and_delete_messages
и т. Д.
Есть ли простой способ вставить пользовательский объект в сеанс, не сохраняя пользователя в базе данных?
Что-то вроде:
request.session['user'] = authenticate(saml_authentication=auth)
lol, я думал, это новый вопрос! нм, игнорировать этот ответ ... –