Django-유저 권한과 인증

 

권한과 인증

Django 는 간단한 권한 시스템을 가지고 있다. 이 시스템은 특정한 유저와 특정한 유저들의 그룹에게 권한을 할당하는 방법을 제공한다.

이는 Django Admin 사이트 에서 사용되지만, 직접 코드에서 이 방법을 사용하는것도 얼마든지 가능하다.

Django Admin 사이트는 다음과 같이 권한을 사용한다:

  • 뷰 객체에 대한 접근은 해당 유형의 객체에 대한 보기 또는 변경 권한을 가진 사용자로 제한된다.
  • 추가 form 과 객체를 주가하는 뷰에 대한 접근은 해당 객체에 대해 추가 권한을 가진 사용자로 제한된다.
  • 변경 목록 뷰, 변경 form 과 객체를 변경하는 뷰에 대한 접근은 변경 권한을 가진 사용자로 제한된다.
  • 객체를 삭제 하려는 접근은 해당 객체에 대해 삭제 권한을 가진 사용자로 제한된다.

권한은 객체의 유형에 따라 설정될 수 있을뿐만 아니라 특정한 객체의 인스턴스에 따라 설정될 수도 있다. ModelAdmin 클래스에서 제공되는 has_view_permission(), has_add_permission(), has_change_permission() has_delete_permission() 메서드를 사용함으로써 같은 유형의 객체의 서로 다른 인스턴스를 커스터마이징 할 수 있다.

사용자 객체는 두 가지의 다대다 필드를 포함하고 있다: groupsuser_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()