【问题标题】: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