python - modelo - Django 1.8, mĂșltiples tipos de usuarios personalizados
path login django (1)
En primer lugar, no puede hacer una base de usuarios de autenticación múltiple para un proyecto. Por lo tanto, debe usar la autenticación de usuario de Django que se proporciona y dividirla para múltiples tipos de usuarios. El usuario de Django tiene algunos valores predeterminados que debe proporcionar durante el registro (intente crear un usuario en Django Admin). Lo que puede hacer es crear un modelo llamado ''CustomUser'' y heredarlo de AbstractUser
. Esto hará que su modelo ''CustomUser'' sea el predeterminado para los usuarios del proyecto. Debido a que hereda de AbstractUser
este modelo ''CustomUser'' tendrá todos los campos del modelo original de Usuarios, y luego puede agregar algunos campos por su cuenta. También debe especificar en el archivo settings.py
del proyecto que el modelo original de Usuarios ya no es su modelo de autenticación predeterminado, es su nuevo modelo ''CustomUser'' que se usará para la autenticación. Vea si el siguiente código ayuda.
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
type_choices = (
(''SU'', ''Super User''),
(''A'', ''User Type A''),
(''B'', ''User Type B''),
(''C'', ''User Type C''),
)
user_type = models.CharField(max_length=2,
choices=type_choices,
default=''C'')
class UserDetails(model.Model):
type = models.OneToOneField(''CustomUser'')
extra_info = models.CharField(max_length=200)
En el código anterior, ha creado el modelo CustomUser donde los usuarios pueden proporcionar la información básica como nombre de usuario, contraseña, etc., que es la predeterminada en Django. Y luego selecciona qué tipo de usuario es y guarda su información adicional en el modelo UserDetails que también tiene relación OneToOne con su nuevo modelo de autenticación. Una última cosa que debes hacer es en el archivo settings.py
.
AUTH_USER_MODEL = ''index.CustomUser''
Aquí, el index
es la aplicación en la que se CustomUser
mi modelo CustomUser
.
Espero que esto ayude.
Estoy creando un sitio de Django que tendrá 4 tipos de usuarios;
- Superadministrador: gestiona esencialmente todo tipo de usuarios.
- UserTypeA: puede iniciar sesión en el sitio y, básicamente, tendrá una interfaz CRUD para algún modelo arbitrario. También tiene atributos adicionales (información específica que solo pertenece a los usuarios de TypeA)
- UserTypeB: puede iniciar sesión en el sitio y tiene información adicional que pertenece específicamente a los usuarios de TypeB, también puede crear y administrar cuentas de usuario de TypeC
- UserTypeC: puede iniciar sesión en el sitio y tiene información adicional que pertenece solo a los usuarios de TypeC.
Observando que planeo crear una interfaz personalizada y no utilizar la interfaz de administración integrada. ¿Cuál sería el mejor método para implementar esta estructura de usuario? Preferiría usar el sistema de autenticación integrado de Django (que administra la formación de claves y el hashing de contraseñas, junto con la administración de sesiones, etc.), pero estaría abierto a usar otro sistema de autenticación si es seguro y está listo para la producción.
EDITAR: Además, mi plan es utilizar 1 pantalla de inicio de sesión para acceder al sitio y utilizar los permisos y el tipo de usuario para determinar qué estará disponible en el panel de control de cada usuario.
EDITAR: ¿Sería posible lograr esto mediante el uso de una aplicación para cada tipo de usuario y, de ser así, cómo se haría con una sola pantalla de inicio de sesión?