Django GrahpQL ACL?
Django GrahpQL ACL?
是否有 Django GraphQL ACL?就像你不能访问 Query/Mutation 如果用户没有权限。
例如,登录用户只有产品权限Query/Mutation,没有人力资源权限Query/Mutation。我怎样才能 return 出现“权限被拒绝!”之类的错误消息?
如果您使用 graphene-django-cud(用于突变),如果您不希望特定用户执行某些操作,则 check_permissions
hook that you can hook into 会引发错误。
from graphene_django_cud.mutations import DjangoUpdateMutation
from graphql import GraphQLError
class UpdateUserMutation(DjangoUpdateMutation):
class Meta:
model = User
login_required = True
@classmethod
def check_permissions(cls, root, info, input, id, obj):
if not can_update(obj, info.context.user):
raise GraphQLError("You do not have permission to access this mutation.")
需要注意的事项:请注意 check_permissions
的参数在他们的文档(上面链接)中是错误的。我在片段中写了正确的参数。他们的 github 是正确的。
与此类似,当您查询时,在您常用的解析器中执行以下操作:
def resolve_users(cls, root, info, id=None):
user_obj = User.objects.get(id=id)
if not can_view(user_obj, info.context.user):
raise GraphQLError("You shall not pass")
return user_obj
是否有 Django GraphQL ACL?就像你不能访问 Query/Mutation 如果用户没有权限。
例如,登录用户只有产品权限Query/Mutation,没有人力资源权限Query/Mutation。我怎样才能 return 出现“权限被拒绝!”之类的错误消息?
如果您使用 graphene-django-cud(用于突变),如果您不希望特定用户执行某些操作,则 check_permissions
hook that you can hook into 会引发错误。
from graphene_django_cud.mutations import DjangoUpdateMutation
from graphql import GraphQLError
class UpdateUserMutation(DjangoUpdateMutation):
class Meta:
model = User
login_required = True
@classmethod
def check_permissions(cls, root, info, input, id, obj):
if not can_update(obj, info.context.user):
raise GraphQLError("You do not have permission to access this mutation.")
需要注意的事项:请注意 check_permissions
的参数在他们的文档(上面链接)中是错误的。我在片段中写了正确的参数。他们的 github 是正确的。
与此类似,当您查询时,在您常用的解析器中执行以下操作:
def resolve_users(cls, root, info, id=None):
user_obj = User.objects.get(id=id)
if not can_view(user_obj, info.context.user):
raise GraphQLError("You shall not pass")
return user_obj