권한과 인증
Django 는 간단한 권한 시스템을 가지고 있다. 이 시스템은 특정한 유저와 특정한 유저들의 그룹에게 권한을 할당하는 방법을 제공한다.
이는 Django Admin 사이트 에서 사용되지만, 직접 코드에서 이 방법을 사용하는것도 얼마든지 가능하다.
Django Admin 사이트는 다음과 같이 권한을 사용한다:
- 뷰 객체에 대한 접근은 해당 유형의 객체에 대한
보기
또는변경
권한을 가진 사용자로 제한된다. 추가
form 과 객체를 주가하는 뷰에 대한 접근은 해당 객체에 대해추가
권한을 가진 사용자로 제한된다.- 변경 목록 뷰,
변경
form 과 객체를 변경하는 뷰에 대한 접근은변경
권한을 가진 사용자로 제한된다. - 객체를
삭제
하려는 접근은 해당 객체에 대해삭제
권한을 가진 사용자로 제한된다.
권한은 객체의 유형에 따라 설정될 수 있을뿐만 아니라 특정한 객체의 인스턴스에 따라 설정될 수도 있다.
ModelAdmin
클래스에서 제공되는 has_view_permission()
, has_add_permission()
, has_change_permission()
has_delete_permission()
메서드를 사용함으로써 같은 유형의 객체의 서로 다른 인스턴스를 커스터마이징 할 수 있다.
사용자 객체는 두 가지의 다대다
필드를 포함하고 있다: groups
와 user_permissions
다.
사용자 객체는 그들의 관계 객체들에게 다른 Django Model 처럼 같은 방식으로 접근할 수 있다:
myuser.groups.set([group_list])
myuser.groups.add(group, group, ...)
myuser.groups.remove(group, group, ...)
myuser.groups.clear()
myuser.user_permissions.set([permission_list])
myuser.user_permissions.add(permission, permission, ...)
myuser.user_permissions.remove(permission, permission, ...)
myuser.user_permissions.clear()