如何限制谁可以使用graphene-django访问GraphiQL API浏览器?

史蒂文·D

Graphene-Django文档注意到,如果您不想使用GraphiQL API浏览器graphiql=FalseGraphQLView可以在实例化时通过但是,我想保持GraphiQL API浏览器可用,而仅限制谁可以访问它。那怎么办?

例如,如何使只有“职员”用户(可以访问管理站点)才有权访问GraphiQL浏览器?

史蒂文·D

您可以扩展Graphene-DjangoGraphQLView并覆盖其can_display_graphiql方法(在此处定义)以添加这种逻辑。

from graphene_django.views import GraphQLView as BaseGraphQLView

class GraphQLView(BaseGraphQLView):
    @classmethod
    def can_display_graphiql(cls, request, data):
        # Only allow staff users to access the GraphiQL interface
        if not request.user or not request.user.is_staff:
            return False
        return super().can_display_graphiql(request, data)

然后在urls.py文件中,使用新的GraphQLView而不是默认的:

# import the GraphQLView defined above
urlpatterns = [
    # ...
    path("graphql", GraphQLView.as_view(graphiql=True)),
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何访问浏览器的DocumentFragment节点?

使用浏览器访问网址

Dropbox API-如何从浏览器访问App文件夹?

使用刷新令牌访问Google Drive API,没有浏览器,出现401错误

从浏览器访问Android API

内部链接被拒绝访问,而直接访问可以使用浏览器 URL

Graphene GraphiQL在浏览器中不起作用,但是Insomnia客户端可以正常工作

有哪些选项可以使使用Selenium和Tor浏览器更快地访问网站?

如何在本地浏览器中从远程服务器访问Django网站?

如何使用Python请求伪造浏览器访问?

对浏览器扩展存储的访问是否有任何限制?

加载网站时可以访问浏览器下载的资产

ssh可以在浏览器上访问文件吗?

Service Worker 可以访问浏览器缓存吗?

在Django上设置浏览器/操作系统限制

如何访问谷歌浏览器的IndexedDB / LevelDB文件?

如何从脚本访问浏览器错误消息?

如何在React应用中访问浏览器Cookie

如何从iPhone浏览器访问在localhost上运行的网站

如何从浏览器访问在docker容器中运行的tomcat?

如何阻止某些网站通过浏览器访问?

如何在浏览器中访问Kubernetes NodePort服务?

如何访问Blazor中的浏览器localStorage?

如何从本地浏览器访问流浪汉?

如何通过浏览器访问您的终端窗口?

如何为边缘浏览器设置分配的访问权限

如何从浏览器访问WCF服务方法?

如何访问VirtualBox上运行的Cassandra浏览器终端?

如何跨设备/跨浏览器访问Cookies?