본문 바로가기

Pyhon/Django

[Pyhon/Django] 장고 기초#017. 장고 계정 권한

계정 권한

일반적으로 보안 또는 계정 권한에 따라서 웹 사이트에서 표시되는 html 엘리먼트를 다르게 처리합니다. 지금까지는 포스트를 누구나 생성 할 수 있었지만, 이번 문서에서는 웹 사이트에 로그인 중인 유저만 이 기능을 사용 할 수 있도록 수정합니다.

blog/base.html에서 다음 코드를 수정합니다.

{% if user.is_authenticated %}
    <a href="{% url 'post_new' %}" class="top-menu">
        <span class="glyphicon glyphicon-plus"></span>
    </a>
{% endif %}

포스트를 새로 생성하는 버튼을 장고 태그로 감싸고 있습니다. 태그에서는 사용자가 로그인 중인지 검사(is_authenticated)하고 버튼을 표시합니다. user는 장고 템플릿에서는 개발자가 따로 전달하지 않더라도 접근 할 수 있고, 사용자 계정의 정보를 포함합니다.

마찬가지로 포스트를 수정하는 버튼 역시 계정 로그인 여부를 확인(본인이 작성한 포스트인지는 검사하지 않습니다)합니다. blog/post_detail.html에서 다음 코드를 수정합니다.

{% if user.is_authenticated %}
    <a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}">
        <span class="glyphicon glyphicon-pencil"></span>
    </a>
{% endif %}

이제 웹 사이트에서 로그인 상태인 경우에만 포스트 생성, 수정 버튼이 표시됩니다. 지금은 웹 사이트를 새로고침하더라도 이전 계정에 대한 세션 정보가 남아있기 때문에 자동으로 로그인 상태입니다. 새로운 브라우저 또는 시크릿 창을 실행하여 웹 사이트에 접속할 경우 포스트 생성과 수정 버튼이 사라진 것을 확인 할 수 있습니다. 크롬 웹 브라우저를 사용하고 있다면 우측 상단에 더 보기 버튼에서 새 시크릿 창을 클릭하면 시크릿 모드를 사용 할 수 있습니다.