DRF 默认权限设定无法对每个接口进行明细的权限设定, 对其增加DrfActionPermission, 利用ViewSet action,为所有接口设定权限。
# settings.py
REST_FRAMEWORK = {
"DEFAULT_PERMISSION_CLASSES": (
"rest_framework.permissions.IsAuthenticated",
"XXX.contrib.drf.permissions.DrfActionPermission"
)
}
# 非ModelViewSet 类,是否放行
REST_DRF_ACTION_PERMISSION_DEFAULT = False
class DrfActionPermission(permissions.BasePermission):
authenticated_users_only = True
action_perms_map = {
"GET": ["%(app_label)s.action_get_%(model_name)s__%(action_name)s"],
"OPTIONS": [],
"HEAD": [],
"POST": ["%(app_label)s.action_post_%(model_name)s__%(action_name)s …