Аутентификация и авторизация с помощью Django GraphQL JWT и Graphene Relay

Я хотел бы спросить, как с помощью Graphen Relay и Django JWT можно использовать теги аутентификации и запроса, ограниченные конкретным пользователем (владельцем). Вот моя модель:

class Tag(models.Model):
"""Tag to be used for a objective"""
name = models.CharField(max_length=255)
user = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    related_name='tag',
    on_delete=models.CASCADE,
)

Вот мой код схемы:

class TagNode(DjangoObjectType):
class Meta:
    model = Tag
    filter_fields = ['name']
    interfaces = (relay.Node,)

Вот мой запрос:

class Query(graphene.ObjectType):
    tag = relay.Node.Field(TagNode)
    all_tags = DjangoFilterConnectionField(TagNode)

    def resolve_all_tags(self, info):

        # context will reference to the Django request
        print(info.context.user)
        if not info.context.user.is_authenticated:
            return Tag.objects.none()
        else:
            return Tag.objects.filter(user=info.context.user)

Вот документ для Django JWT: https://github.com/flavors/django-graphql-jwt, но я не знаю, как получить пользователя (уже использую info.context.user), но он не работает, когда я пытался добавить авторизацию (токен JWT) в заголовок или в качестве аргумента. Тоже не работает.


person ZeroX    schedule 23.12.2019    source источник


Ответы (1)


В основном вы все делаете правильно, и ваш пользователь должен быть успешно получен. Я только что проверил, и в моем случае это работает, я использую JWT как cookie, но это не имеет значения.

Авторизовали ли вы своего пользователя при попытке получить теги?
Поскольку в отношении JWT вам необходимо авторизовать своего пользователя и получить токен JWT. Только после этого реальный пользователь будет представлен в запросе при вызове запроса тегов. В противном случае пользователь будет анонимным.

person Velidan    schedule 19.02.2020