python - 使用 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 令牌)或作为参数。它也不起作用。
解决方案
基本上你做的一切都是正确的,你的用户应该被成功获取。我刚刚检查过,它适用于我的情况,我像使用 cookie 一样使用 JWT,但这没关系。
您在尝试获取标签时是否授权了您的用户?
因为关于 JWT,您需要授权您的用户并接收 JWT 令牌。只有在那之后,当您调用标签查询时,才会在请求中显示真实用户。否则用户将是匿名的。
推荐阅读
- javascript - 按数字排序的键按字母顺序排列枚举值 [Angular/Typescript]
- git - 错误:无效路径'filePath:Zone.Identifier'
- optionmenu - Option/Popup Menu下有ghost层正常吗
- python - 如何从笔记本设置“post_save_hook”?
- php - Laravel 将 SQL 检索转换为字符串
- java - 为什么调用 .block() 时反应堆上下文会抛出“上下文不包含键”?
- selenium - 有没有办法解决错误:在 Jenkins 中找不到指定的 Maven 安装
- javascript - 如何修复无法读取空控制台错误的属性“播放”?
- html - 我正在尝试制作一个网格,其中我的网格中的对象以盒子图案而不是线条出现
- python - ON CONFLICT DO UPDATE 语法和 cursor.executemany 上的 EXCLUDED 错误