장고 프레임워크에서 권한(Permission)은 기본적으로 설계되어 있기 때문에 매우 짧은 코드로 구현 가능하다.
작년에 장고(Django) 프레임워크로 프로젝트를 진행하면서 공부했던 개발 지식을 블로그에 다시 정리하려고 합니다. 개인 위키에 정리했던 것을 옮기는 수준이라, 친절한 설명은 기대하기 어렵고, 프로그래밍 언어와 파이썬 지식이 어느정도 있어야 이해할 수 있을 것입니다.
아래 내용들은 Django 1.6~1.7 버전을 기준으로하고, "쉽고 빠른 웹개발 Django"란 책에서 1/3, 공식 위키에서 1/3, 그리고 나머지는 구글링을 바탕으로 정리한 지식입니다. 말투가 존대와 반말이 섞여있어도 이해바랍니다 :)
1 관리자 화면에서 권한
2 뷰에서 권한
3 템플릿에서 권한
1 관리자 화면에서 권한 관리
사용자 기본 권한
- Active (활성) : 로그인 할 수 있는 권한
- Staff (스태프 권한) : 관리자 화면에 들어올 수 있는 권한
- Superuser (최상위 사용자 권한) : 최고 관리자 (최초 생성 계정과 동일)
권한의 종류
- 특정 모델 객체 추가 (add)
- 특정 모델 객체 변경 (change)
- 특정 모델 객체 삭제 (delete)
그룹 권한
그룹에 권한을 부여함으로써, 그룹에 속한 모든 사용자의 권한을 효율적으로 관리
권한 부여 방법이 사용자와 동일함
2 뷰에서 권한 제어
has_perm 함수
뷰 함수 내부에서 사용자가 특정 권한을 가지고 있는지 확인하려면 User 객체의 has_perm 메서드 사용한다.
사용법 : user.has_perm(앱이름.행위_모델명)
- 앱이름 : 모델이 속한 앱 이름
- 행위 : add | change | delete
- 모델명 : 모델 이름
권한 데코레이터
권한을 뷰 함수 전체에 적용해야 하는 경우 사용
@login_required : 로그인 한 사용자만 허용
기본 LOGIN_URL은 /account/login/ 이기 때문에, 만약 다르면 변경이 필요함. settings.py에서
@permission_required('권한', 리다이렉트주소) : 명시된 권한을 가진 사용자만 허용
3 템플릿에서 권한 제어
{% user.is_authenticated %}
로그인 한 사용자만 허용
'IT > └ 장고(Django) 개발' 카테고리의 다른 글
장고(Django) 개발: JQuery를 이용한 Ajax와 Autocomplete 예제 (0) | 2015.01.17 |
---|---|
장고(Django) 개발: 폼(Form) 관리와 CSRF 취약점 해결 (2) | 2015.01.13 |
장고(Django) 개발: 관리자(Admin) 화면 관리 (0) | 2015.01.11 |
장고(Django) 개발: 사용자 관리 (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 템플릿(Template) (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 뷰(View) (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 모델(Model) (0) | 2015.01.09 |
장고(Django) 개발: 프로젝트 시작과 구성 (0) | 2015.01.09 |