Рама Djnago Rest работа на заказ аутентификация
Я новичок в DRF. У меня есть приложение django и мой проект должен создать rest api для приложения. Внутри приложения у меня есть модель для создания пользователей api и пароля. Модель выглядит следующим образом,
class APIManger(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.CharField(max_length=50, unique=True, verbose_name='API Name')
apiuid = models.CharField(max_length=128, default=None, blank=True, null=True, verbose_name='API ID')
password = models.CharField(max_length=128, default=None, blank=True, null=True, verbose_name='API Password')
REQUIRED_FIELDS = ['user']
class Meta:
managed = True
db_table = 'adminapi'
verbose_name_plural = "Admin API"
def get_name(self):
return self.user
def __str__(self):
return self.user
def __unicode__(self):
return self.user
Теперь я настраиваю работу остального фрейма следующим образом,
authentication.py
from rest_framework import authentication
from rest_framework import exceptions
from myapp.models.adminapi import APIManger
class APIUser(authentication.BaseAuthentication):
def authenticate(self, request):
username = request.data.get('username', None)
password = request.data.get('password', None)
if not username or not password:
return None
try:
user=APIManger.objects.get(apiuid=username)
except Exception:
raise exceptions.AuthenticationFailed('No such user')
return (user, None)
views.py выглядит следующим образом,
from .authentication import APIUser
class LoginView(APIView):
authentication_classes = (APIUser,)
def post(self, request, format=None):
content = {
'username': str(request.user),
'auth': str(request.auth), # None
}
return Response(content)
Settings.py выглядит следующим образом,
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'api.authentication.APIUser',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
Теперь мой AIM должен аутентифицироваться по модели APIManger для остального API. У меня есть другая модель пользователя для основного приложения. Я не хочу использовать модели пользователей основного приложения для остальных API. Как я могу реализовать правильную аутентификацию для остального API, чтобы использовать apiuid и пароль для проверки логинов DRF. Это первый раз, когда я использую этот API фреймворк, я немного потерялся