사용자별 권한 제한 여부 목록 (가능, 불가능)
- 관리자(superuser) : 조회, 추가, 수정, 삭제
- 회원(user) : 조회, 추가, 수정, 삭제
- 비회원 : 조회, 추가, 수정, 삭제
여기서 권한 제한이란, 프론트엔드 페이지에서 해당 페이지로 가는 버튼이 보이지 않는 것을 말함
1. 비회원 조회, 추가, 수정, 삭제 페이지 접근 제한
<!-- fst/templates/fst/rcptable_create.html -->
{% extends 'base.html' %}
{% block title %}레시피를 추가해봅시다~{% endblock %}
{% block content %}
<!-- 추가한 코드 -->
{% if user.is_authenticated %}
<!-- 추가한 코드 끝 -->
<form action="" method="post">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Add" class="btn btn-info btn-sm">
</form>
<!-- 추가한 코드 -->
{% else %}
레시피 목록을 볼 수 있는 권한이 없습니다. 로그인 해 주세요.
{% endif %}
<!-- 추가한 코드 끝 -->
{% endblock %}
2. 관리자로 로그인했을 때만 관리자 메뉴 뜨게 하기
<!-- templates/base.html -->
...
<li class="nav-item"><a href="{% url 'logout' %}" class="nav-link">로그아웃</a></li>
<!-- 추가한 코드 -->
{% if user.is_superuser %}
<!-- 추가한 코드 끝 -->
<li class="nav-item"><a href="{% url 'admin:index' %}" class="nav-link">관리자</a></li>
<!-- 추가한 코드 -->
{% endif %}
<!-- 추가한 코드 끝 -->
<li class="nav-link">{{user.first_name}}{{user.last_name}} 님, 환영합니다!</li>
...
3. 회원은 글쓰기, 수정, 삭제 버튼 볼 수 없게 하기 + 해당 페이지 접근 불가
2번과 똑같이 글쓰기, 수정, 삭제 버튼 앞뒤부분에 {% if user.is_superuser %} {% endif %} 코드를 추가해주면 된다.
또한 글쓰기, 수정, 삭제 페이지에 접근 자체가 불가능하도록 페이지 자체에도 코드를 추가해준다.
그러나 이와 같은 방법으로 완벽하게 접근 구현이 되는 것인가 의문이다.
뭔가 어떻게든 뚫고 들어갈 수 있지 않을까... 싶어서
더 완벽한 방법이나 다른 방법이 없는지 나중에 찾아봐야 할 것 같다.
Spring만 하다가 Django를 다뤄보니 뭔가 찝찝한 점이 많다.
'Django' 카테고리의 다른 글
Django 검색 기능 구현 (0) | 2022.12.08 |
---|---|
Django 게시글 리스트 페이징 처리 (0) | 2022.12.07 |
Django 회원가입 후 자동 로그인 (0) | 2022.12.07 |
Django Argon2 암호화 알고리즘 적용하기 (0) | 2022.12.06 |
Django 회원가입 기능 추가하기 (0) | 2022.12.01 |
댓글