Django有两种方法。
常规DRF将用户限制在中间件级别。因此,未登录的用户无法访问任何内容。
GraphQL使用“每个方法”方法。因此中间件传递所有请求和每种方法。但是之后方法会调用装饰器。
除了GraphQL,我想实现第一种方法。但是在那种情况下,我需要打开登录突变的路径。如何从有效载荷中提取突变名称?
答案 0 :(得分:2)
如果您想将GraphQL API端点限制为Django登录用户,则可以通过使用LoginRequiredMixin
扩展GraphQLView来实现。
from django.contrib.auth.mixins import LoginRequiredMixin
from graphene_django.views import GraphQLView
class PrivateGraphQLView(LoginRequiredMixin, GraphQLView):
"""Adds a login requirement to graphQL API access via main endpoint."""
pass
,然后将此视图添加到您的urls.py
中
path('api/', PrivateGraphQLView.as_view(schema=schema), name='api')
按照docs的常规方法。
如果您不保护整个API,则可以为未受保护的查询和变异创建另一个架构和终结点,从而可以将两者明确分隔。例如在urls.py中:
path('public_api/', GraphQLView.as_view(schema=public_schema), name='public_api')
请注意,每个API终结点必须至少具有一个查询才能工作,否则将导致声明错误。
答案 1 :(得分:0)
不确定它是否符合您的目的,但是我使用了以下库,该库将JWT身份验证与石墨烯一起使用,类似于使用DWT的JWT的工作原理!