【问题标题】:Make Django REST endpoints inaccessible if no permission exists如果不存在权限,则使 Django REST 端点不可访问
【发布时间】:2019-12-18 22:17:30
【问题描述】:

目前我正在使用 Django 创建一个 webbackend,其中管理是使用 KeyCloak 完成的。

使用 KeyCloak,我可以为用户分配特定角色(例如客户、订阅客户)。

客户和订阅客户拥有不同的权限。 (例如在电影行业,只有订阅客户可以观看所有电影,而普通客户不能) 每部电影都有一个终点。

如果缺少权限,如何使此端点无法访问?

【问题讨论】:

    标签: python django keycloak web-administration


    【解决方案1】:

    你必须在你的用户模型中创建一个 user_type 字段

     ACCESS_CHOICES = (
            ('subscriber', 'subscriber'),
            ('non-subscribe', 'non-subscribe')
        )
    
    user_type = models.CharField(choices=ACCESS_CHOICES, max_length=15)
    

    创建一个自定义权限类并将其放入您的视图中

    class MoviesAccessPermssion(permissions.BasePermission):
        def has_permission(self, request, view):
            return True or False #on base of request.user.user_type
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2021-05-12
      • 1970-01-01
      • 2022-10-05
      相关资源
      最近更新 更多