2011-03-25 10 views
1

나는이 질문에 다음과 같이 권장합니다 : What's the best solution for OpenID with Django?django-openid-auth을 내 응용 프로그램에 설치했습니다.django-open-id : CSRF 확인에 실패했습니다.

하지만 난 그냥 내가 로그인을 시도 할 때, 난 항상 CSRF verification failed. Request aborted.를 얻을 작업을 얻을 수

django csrf

내가 체크 한 모든 :.

{% csrf_token %}을 템플릿에 있음 :

<form name="fopenid" action="{{ action }}" method="post"> 
    {% csrf_token %} 
    <fieldset> 
     <legend>Sign In Using Your OpenID</legend> 
     <div class="form-row"> 
      <label for="id_openid_identifier">OpenID:</label><br /> 
      {{ form.openid_identifier }} 
     </div> 
     <div class="submit-row "> 
      <input name="bsignin" type="submit" value="Log in"> 
     </div> 
{% if next %} 
     <input type="hidden" name="next" value="{{ next }}" /> 
{% endif %} 
    </fieldset> 
</form> 
views.py에서 363,210

2.

나는 그들이 RequestContext를 사용하는 것이 발견 django_openid_auth의 내부 :

return render_to_response(template_name, { 
        'form': login_form, 
        redirect_field_name: redirect_to 
        }, context_instance=RequestContext(request)) 

3.

MIDDLEWARE_CLASSES 포함 않습니다 CsrfViewMiddleware :

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

나는 그 밖의 무엇이 잘못 될 수 있는지 이해할 수 없다. 아이디어가 있습니까?

저는 장고 1.3 베타를 사용하고 있습니다.

UPDATE

이 내 글로벌 문제가 될 것으로 보인다. 나는 간단한 양식을 작성 동일한 결과를 가지고 :

def index(request): 
    return render_to_response('index.html', 
           locals(), 
           context_instance=RequestContext(request)) 

index.html을 :

<form action="/" method="post"> 
    {% csrf_token %} 
    <input type="text" name="test"> 
    <input type="submit"> 
</form> 

렌더링 된 HTML : 잘못 무엇

<form action="/" method="post"> 
    <div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="1fbd5345560d325bf05809260f7d43c3"></div> 
    <input type="text" name="test"> 
    <input type="submit"> 
</form> 

!?

답변

0

사실 나는 이것이 장고에서 처음 만난 버그라고 생각합니다. 내 사본을 1.3의 새로운 릴리스로 업데이트했고 모든 것이 작동하기 시작했습니다. 좋은 직장, 장고 개발자!

1

"manage.py runserver"대신 "manage.py runserver localhost : 8000"을 시도했는데 호스트 이름이 btw 인 ip 때문에 일부 쿠키 문제가 있습니다. 난 장고의 새로운 복사본이 오류가있어 1.3