Разрешение уровня роли Django DRF - PullRequest
1 голос
/ 07 марта 2019

Я разработал API с использованием DRF. Я изо всех сил пытаюсь связать часть авторизации с разрешением Django по умолчанию, которое мы определяем в разделе администратора для каждой роли для API.

Допустим, у меня есть два API Customer Management и Customer Sales, и у меня есть две роли, созданные из них на административном портале Django. Роль manager будет управлять только клиентом (add, view, delete и update), тогда как роль sales будет управлять продажами (add, view, delete и update) для каждого клиента .

Когда я пытаюсь протестировать их на административном портале, разрешения работают нормально. Соответствующая роль имеет соответствующий доступ. Если я использую то же самое с REST API, он не соответствует разрешению, определенному в бэкэнде. Это похоже на то, что обе роли могут получить доступ к обоим API.

Как мне справиться с этим? Должен ли я реализовать свою собственную систему разрешений, игнорируя старую (auth_permission, auth_group_permissions, auth_user_user_permissions), используемую в Django, или есть ли обходной путь для использования разрешений Django для этой работы?

1 Ответ

1 голос
/ 07 марта 2019

Вы можете сделать свой класс разрешения, как показано ниже

class CustomPermission(BasePermission):
    def has_permission(self, request, view):
        if request.user.is_authenticated():
            return True if request.has_perm('can_read') else False # or stuff similar to this 
        return False

И используйте этот класс CustomPermission для атрибута APIView.

Для получения дополнительной информации о разрешениях DRF посещение https://www.django -rest-framework.org / api-guide / permissions /

...