instalar - django rest framework with django 2
Base de datos no utilizada TokenAuthentication para django-rest-framework (2)
Estoy tratando de crear una API con autentificación de tokens. Mi problema es que no quiero que los tokens se asocien con cuentas de usuario, sino un modelo de cuenta.
Por ejemplo:
class Account(models.Model):
slug = models.SlugField()
name = models.CharField(max_length=255)
website = models.URLField(blank=True, default='''')
members = models.ManyToManyField(User, through=''AccountMember'')
class AccountMember(models.Model):
ADMIN = 1
MANAGER = 2
MEMBER = 3
ROLES = (
(ADMIN, ''administrator''),
(MANAGER, ''manager''),
(MEMBER, ''member''),
)
user = models.ForeignKey(User)
account = models.ForeignKey(Account)
role = models.PositiveSmallIntegerField(choices=ROLES)
date_joined = models.DateField(auto_now_add=True)
class Token(models.Model):
"""
The default authorization token model.
"""
key = models.CharField(max_length=40, primary_key=True)
account = models.ForeignKey(Account, related_name=''auth_tokens'')
only_allowed_ips = models.BooleanField(default=False)
ip_list = models.TextField(default='''', blank=True)
created = models.DateTimeField(auto_now_add=True)
Como puede ver, hay múltiples usuarios asociados con una cuenta, así que asignarles el token sería inútil.
También quiero poder agregar múltiples tokens a una cuenta.
¿Alguien sabe de qué manera podría agregar autenticación / permisos a un sistema como este?
Debe replicar las siguientes clases:
django.contrib.auth.backends.ModelBackend: para comprobar la autenticación y los permisos django.contrib.auth.middleware.AuthenticationMiddleware: para establecer su cuenta vinculada a la solicitud
probablemente deba crear otro django.contrib.auth.models.Permission para almacenar sus permisos relacionados con la Cuenta
Acabo de enfrentar el problema yo mismo. Lo que decidí hacer es duplicar el módulo authtoken de django rest framework en mi aplicación y aplicar mis propias modificaciones.
Puede copiar la carpeta del repositorio de DRF en la carpeta de su propia aplicación. Asegúrese de cambiar los campos relacionados en su settings.py , application / authtoken / admin.py y, por supuesto, en su aplicación / authtoken / models.py