Использование токена, сгенерированного при входе в систему
Я разработал API для работы с моим веб и также генерирую токен при входе/регистрации из запроса Postman, используя knox для токена. Теперь я хочу использовать этот токен, который связан с учетной записью, которая вошла в систему, чтобы получить имя пользователя, чтобы я мог знать, какая учетная запись сделала запрос. Но я не уверен, как использовать этот токен. Может ли кто-нибудь дать мне совет, как это сделать, поскольку я совсем новичок в этом деле. Только вчера узнал, как сгенерировать этот токен. Спасибо !
views.py
@api_view(['POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def create_job(request):
job = Job()
jobserializer = JobSerializers(job, data = request.data)
if jobserializer.is_valid():
operation = jobserializer.save()
data = {}
if operation:
data["Success"] = "Successfully created"
return Response(data)
return Response(jobserializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py
class JobSerializers(serializers.ModelSerializer):
class Meta:
model = Job
fields = ['combinedparameters', 'servicedate']
models.py
class Job(models.Model):
owner = models.CharField(max_length = 150)
datetime = models.DateTimeField(default=timezone.now)
combinedparameters = models.CharField(max_length = 1000)
servicedate = models.CharField(max_length=10)
def __str__(self):
return self.servicedate
В веб-браузере я получаю пользователя по request.user
, но я не уверен, как использовать этот токен для получения пользователя в API.
Если пользователь аутентифицирован, вы можете найти вошедшего пользователя, который использует этот токен, токены обычно передаются в заголовке с каждым запросом.
Вы можете использовать сериализатор для пользовательских данных:
@api_view(['GET'])
def current_user(request):
serializer = UserSerializer(request.user)
return Response(serializer.data)
или без сериализатора:
@api_view(['GET'])
def current_user(request):
user = request.user
return Response({
'username': user.username,
'email': user.email
})