默认解析器的身份验证/授权

Posted

技术标签:

【中文标题】默认解析器的身份验证/授权【英文标题】:Authentication/Authorization for default resolvers 【发布时间】:2019-03-02 13:21:41 【问题描述】:

我阅读了关于如何使用 @login_required 和其他带有解析器的装饰器的描述。但是,如果不使用显式解析器(而是使用默认解析器),如何执行类似的访问控制?

就我而言,我将石墨烯与 Django 用户模型一起使用。我有以下内容:

class UserNode(DjangoObjectType):
    class Meta:
        model = User
        filter_fields = ['first_name', 'last_name', 'id', 'email']
        interfaces = (Node, )

class Query(object):
    userNode = relay.Node.Field(UserNode)
    all_users = DjangoConnectionField(UserNode)

如果我明确定义一个 'resolve_all_users' 方法并在其上使用 @login_required 装饰器,它就可以正常工作。但是我的架构中的这个(和其他对象)依赖于默认解析器。如何在无需明确定义解析器的情况下保护它们?

我承认自己是使用石墨烯/graphql 的新手......非常感谢任何帮助我指明正确方向的人。

来源:https://github.com/flavors/django-graphql-jwt/issues/36

【问题讨论】:

【参考方案1】:

没有明确定义resolve_方法的简单方法。

但你仍然可以继承Field 类并添加额外的构造函数参数来支持此功能或使用resolve_ :)

【讨论】:

最好的方法是在get_queryset 方法中。但这只有在您使用 DjangoObjectType 时才有效

以上是关于默认解析器的身份验证/授权的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“默认”。

未指定 authenticationScheme,并且没有找到具有默认身份验证和自定义授权的 DefaultChallengeScheme

Blazor入门100天 : 身份验证和授权

AWS Bitnami Parse Server - 添加 HTTP 身份验证使我在解析仪表板中的应用程序“未经授权”

使用 JWT 进行护照身份验证:如何将护照的默认未经授权响应更改为我的自定义响应?

在解析服务器中禁用默认用户身份验证