IT

Django 그룹과 권한은 어떻게 사용하나요?

lottoking 2020. 10. 10. 10:24

Django 그룹과 권한은 어떻게 사용하나요?


기본 사용자 항목을 이해합니다. 인증, 로그인, 계정 생성 등을 알고 있습니다.하지만 이제 그룹과 권한에 대해 작업하고 싶습니다.

장고 그룹 / 권한에 대한 문서는 어디에 있습니까? 이것이 아닙니다 : http://docs.djangoproject.com/en/dev/topics/auth/


첫 번째 질문은 어떤 권한이 필요하고 어떤 종류의 권한이 필요한지입니다. 어떤 종류로든 모델 수준 또는 개체 수준을 원하십니까? 차이점을 검증하기 위해 자동차 모델이 검증 가정합니다. 모든 차량에 대한 권한을 부여받습니다. 둘 다 필요할 수 있습니다.

모델 권한의 경우 Django가 설치 작업을 처리합니다. Django는 각 모델에 대해 'appname.permissionname_modelname'형식으로 권한을 생성합니다. Car 모델에 'drivers'라는 앱이있는 경우 하나의 권한은 'drivers.delete_car'입니다. Django가 자동으로 생성하는 권한은 생성, 변경 및 삭제입니다. 이상한 경우 CRUD의 읽기 권한을 결정한 경우 직접 수행해야합니다. Django는 어떤 버전의 CRUD의 '업데이트'를 '변경'으로 변경하기로 결정했습니다. 모델에 더 많은 권한을 추가 비용 (예 : 읽기 권한) 메타 클래스를 사용합니다.

class Car( models.Model ):
    # model stuff here
    class Meta:
        permissions = ( 
            ( "read_car", "Can read Car" ),
        )

권한은 튜플 집합이며, 튜플 항목은 권한과 해당 권한에 대한 설명입니다. permname_modelname 규칙을 따를 필요는 없지만 보통 그것을 고수합니다.

마지막으로 권한을 확인하신 후 has_perm을 사용할 수 있습니다.

obj.has_perm( 'drivers.read_car' )

여기서 obj는 사용자 또는 그룹 인스턴스입니다. 이것에 대한 함수를 작성하는 것이 더 간단하다고 생각합니다.

def has_model_permissions( entity, model, perms, app ):
    for p in perms:
        if not entity.has_perm( "%s.%s_%s" % ( app, p, model.__name__ ) ):
            return False
    return True

널은 (그룹 또는 사용자)에 대한 권한을 확인할 개체이고, 모델은 모델의 인스턴스이고, perms는 확인할 수 있습니다 (예 : [ 'read', 'change'])의 권한 목록이고, app은 인증서로 된 애플리케이션 이름. 위의 has_perm과 동일한 검사를 수행 한 다음과 같이 호출합니다.

result = has_model_permissions( myuser, mycar, ['read'], 'drivers' )

(동일한 의미 임) Django는 그 자체로 도움을 줄 수 없습니다. 좋은 점은 모델 및 개체 권한을 나란히 사용할 수 있습니다. ( 1.2 이상을 사용하는 경우) 다른 사람이 그것을 찾아야 직접 작성하거나 . 제가 좋아하는 것은 washingtontimes의 django-objectpermissions 입니다.

참고 URL : https://stackoverflow.com/questions/4778685/how-do-i-use-django-groups-and-permissions