2016-10-26 4 views
0

최근에 내 장고 앱의 로그 아웃 기능이 손상된 것으로 나타났습니다. 나는 그것이 과거에 효과가 있었다고 믿지만 지금은 왜 효과가 없는지 알 수 없다. 내 설정이다로그 아웃 후 Django 세션이 삭제되지 않음

:

index.html을 :

... 
{% if request.user.is_authenticated %} 
    <a style="position: absolute; top: 0; left: 0;" href="{% url 'auth_logout' %}">Logout</a> 
{% else %} 
    <a style="position: absolute; top: 0; left: 0;" href="{% url 'auth_login' %}">Login</a> 
{% endif %} 
... 

urls.py :

... 
from django.contrib.auth import views as auth_views 
... 

urlpatterns = [ 
    ..., 
    url(r'^accounts/logout/$', auth_views.logout, name='auth_logout'), 
    url(r'^accounts/login/$', auth_views.login, name='auth_login'), 
    ... 
] 

템플릿 :

login.html :

{% extends 'simple_logo_base.html' %} 

{% block content %} 
    <div class="row"> 
     <div class="col-md-3"></div> 
     <div class="col-md-6"> 
      <h2>Login</h2> 
      {% if next %} 
       <form action="/accounts/login/?next={{next}}" method="post" > 
      {%else%} 
       <form action="/accounts/login/" method="post" > 
      {% endif %} 
       {% csrf_token %} 
       {{ form.as_p }} 
       <button type="submit">Login</button> 
      </form> 
     </div> 
     <div class="col-md-3"></div> 
    </div> 
{% endblock %} 

logout.html :

"simple_logo_base.html는"로고를 포함하는 사업부와 단지 일반 HTML 구조
{% extends 'simple_logo_base.html' %} 

{% block content %} 
    <h2 class="text-center">Logged out</h2> 
{% endblock %} 

.

문제 : 로그인이 완벽하게 작동합니다. 제한된 index.html 페이지에 액세스하려고하면 로그인 페이지로 리디렉션되고 로그인 할 수 있으며 제한된 페이지에 액세스 할 수 있습니다.

일단 로그인하고 "로그 아웃"버튼을 클릭하면 (위 참조) logout.html 페이지로 리디렉션되지만 index.html로 돌아갈 수 있으며 아직 로그됩니다 in.

따라서 데이터베이스의 "django_sessions"테이블을보고 세션이 절대로 삭제되지 않는 것으로 나타났습니다. 수동으로 삭제하면 index.html에 액세스 할 때 다시 로그인 페이지로 리디렉션됩니다.

내가 뭘 잘못하고 있니? 무엇이 문제 일 수 있습니까?

최근에 장고 1.10으로 업그레이드하고 내 프로젝트에 캐싱 프레임 워크를 추가했습니다. 이러한 변화와 관련이있을 수 있습니까?

답변

0

나는 그 동안 문제를 해결했다. 그러나 정확한 문제가 무엇인지 확신 할 수 없습니다.

  • 재설정 캐시 페이지에
  • 사용 @vary_on_cookie 데코레이터가 기반으로하는 모든 인증 관련 URL의 CONFIGS : 다른 사람의 경험과 유사한 문제가 있다면, 여기에 내가 시도 (그리고 분명히 나를 위해 문제를 해결) 것들입니다 세션
  • 모두 지우기 캐시와 세션

나는 문제가 캐싱을 중심으로 관련 생각. @cache_page 데코레이터를 사용할 때, 캐싱은 요청 된 URL만을 기반으로합니다. 따라서 모든 사용자가 이미 로그 아웃 한 경우에도 동일한 캐시 된 페이지를 수신했습니다. 그러나 로그 아웃 할 때 세션이 삭제되지 않은 이유는 설명하지 않습니다. 어쩌면 여기서 또 다른 문제가 주요 문제 였을 것입니다.

관련 문제