Tengo una aplicación de Django que obtiene sus datos completamente de una fuente externa (consultada a través de HTTP). Es decir, no tengo la opción de una base de datos local. Los datos de sesión se almacenan en la memoria caché (en mi servidor de desarrollo utilizo una base de datos SQLite, por lo que no es fuente de error). Estoy usando el borde sangriento Django 1.1svn.Usuarios de Django y autenticación de fuente externa
Ingrese el problema: Deseo utilizar el propio sistema de autenticación de Django para los usuarios.
Parece bastante simple escribir mi propio Authentication Backend, pero siempre bajo la condición de que tenga una base de datos local donde guardar los usuarios. Sin base de datos, mi principal problema es la persistencia.
he probado con los siguientes (asumir que datasource.get()
es una función que devuelve algún tipo de dict):
class ModelBackend (object):
"""Login backend."""
def authenticate (self, username=None, password=None):
"""Check, if a given user/password combination is valid"""
data = datasource.get ('login', username, password)
if data and data['ok']:
return MyUser (username=username)
else:
raise TypeError
return None
def get_user (self, username):
"""get data about a specific user"""
try:
data = datasource.get ('userdata', username)
if data and data['ok']:
return data.user
except:
pass
return None
class MyUser (User):
"""Django user who isn't saved in DB"""
def save (self):
return None
Pero el save()
método intencionada falta de MyUser parece romper el almacenamiento de sesión de un inicio de sesión.
¿Cómo debería ser MyUser
sin una base de datos local?
acabo de encontrar parece hacer lo que quiera. Si lo he evaluado, publicaré una respuesta (no se desanime para agregar el suyo ;-)). –
Boldewyn
El enlace tiene un '>' ... maldito rastreador. – Boldewyn