【问题标题】:How to disable access to a django APIs based on is_active boolean field?如何基于 is_active 布尔字段禁用对 django API 的访问?
【发布时间】:2021-11-22 03:43:05
【问题描述】:

我有一个带有字段的作者模型:

is_active = models.BooleanField(default=False)

我希望限制 is_active=False 的作者访问。

我可以在每个 api 中使用这样的东西:

get_object_or_404(uuid=id, is_active=True)

但我希望全局限制访问 is_active=false 的 UUID,而不是在每个 api 中实际编写此语句。

有什么办法可以做到吗?

【问题讨论】:

  • 您是否确实希望返回这些作者?您可以使用默认排除所有非活跃作者的自定义管理器

标签: django django-models django-rest-framework django-class-based-views


【解决方案1】:

您可以创建自定义权限类并将其用作权限类,您将在其中检查用户是否已通过身份验证以及是否为活动成员。

类似这样的:

class UserIsActive(permissions.BasePermission):

    def has_permission(self, request, view):
        if request.user.is_authenticated and request.user.is_active:
            return True
        return False

    def has_object_permission(self, request, view, obj):
        if request.user.is_active:
            return True
        return False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 2020-10-10
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多