6

Actualmente estoy desarrollando un sitio de Django en el que los usuarios pueden tener múltiples 'cuentas', de modo que puedan cambiar sin problemas entre diferentes perfiles públicos al interactuar a través del sitio. Lo que estoy diseñando probablemente atraiga múltiples registros por persona (y no se desanimará), solo me gustaría ofrecer esto de tal manera que los usuarios puedan mantener los perfiles unidos, cambiar fácilmente y solo tener que iniciar sesión. en una.inicios de sesión Dyango para múltiples usuarios: ¿el mejor enfoque?

Los dos enfoques que he pensado hasta ahora incluyen:

  • Uno (User modelo + modelo SiteProfile) par y muchos modelos PublicProfile por persona. AUTH_PROFILE_MODULE está configurado para apuntar al modelo SiteProfile. Problema con esto es que no puedo usar fácilmente los permisos por objeto: se establecerán en el objeto User y no en el perfil público, por lo que los permisos para ver una página para "PublicProfileA" también se aplicarán cuando el usuario esté enmascarado. como "PublicProfileB".

  • Un modelo Account y muchos (User modelo + UserProfile modelo) pares por persona. AUTH_PROFILE_MODULE se establece para apuntar al modelo UserProfile. Esto tendría el beneficio adicional de que los permisos funcionaran como estaba previsto, y que simplemente puedo tener un servidor personalizado que cambiará a los usuarios autenticando a un usuario si están actualmente conectados como otro usuario que tiene el mismo objeto Account que la clave externa. . Sin embargo, la autenticación ocurriría al leer campos en el objeto Account, lo que significaría que el campo password en cada objeto User se desperdiciará.

  • Como arriba, pero subclases Account de User. Sin embargo, he sido fuertemente aconsejado en contra de esto (por razones poco claras).

¿Hay algún inconveniente o mejor enfoque para esto? En última instancia, ¿debo usar el modelo User incorporado como el modelo de uno por persona que identifica un grupo de perfiles públicos (de los cuales estos perfiles tienen un FK de regreso al objeto User), o usarlo como el perfil en sí, vincular de nuevo a un solo objeto Account para cada persona?

+0

Pregunta interesante. ¿Puedes proporcionar un poco más de contexto sobre lo que ofrecerán estos diferentes perfiles? p.ej. Si estuviera construyendo un sitio de comercio electrónico, sus usuarios podrían tener cuentas personales y cuentas corporativas. Esto afectaría, por ejemplo, la política de descuentos, la cantidad/volumen de la orden, etc. Esta información ayudaría a hacer una sugerencia más informada. – rantanplan

+0

Guau, ¡disculpas por que sea tan tarde! Esto es para un sitio social, una función es un elemento de juego de roles. Todas las cuentas son 'iguales' en cuanto a que no tendrán 'tipos' separados, no existe tal cosa como una cuenta Corperate o Personal, simplemente 'Miembros'. Además, habrá backends de autenticación personalizados escritos de todos modos, ya que el back-end Django auth incorporado no satisface mis necesidades. ¡Espero que ayude! –

Respuesta

0

Sí, creo que el mejor enfoque sería tener un solo Usuario por persona y varios objetos PublicProfile que puedan "cambiar". Esto brinda el beneficio de solo un nombre de usuario/contraseña para ellos y parece tener más sentido con la forma en que funciona la autenticación de Django.

Cuestiones relacionadas