CSRF verification failed. Request aborted.

188 views
Skip to first unread message

Charles Sartori

unread,
Oct 9, 2012, 6:00:44 PM10/9/12
to django...@googlegroups.com
Seguinte pessoal, tenho um projeto em php, nesse projeto em php tenho um menu, e no menu uma aba para login... após efetuar esse login o usuário é mandado para um outro projeto mas usando django.

logo após o login tenho esse erro:

Forbidden (403)
CSRF verification failed. Request aborted.
... 

Logando dentro do projeto django onde eu posso usar o {% csrf_token %} tudo funciona ok! 
 

 

George Ribeiro

unread,
Oct 9, 2012, 6:04:32 PM10/9/12
to django...@googlegroups.com
Você pode usar o csrf_exempt para não exigir o token na view.

--
 
 

Charles Sartori

unread,
Oct 10, 2012, 9:14:38 AM10/10/12
to django...@googlegroups.com
Não tem outro jeito para se fazer isso sem desabilitar o token? Por ser uma view de login, acredito que esse csrf_token é importante... e outra estou usando django.contrib.auth.views.login como minha view para login.

--
*Charles Sartori

luan fonceca

unread,
Oct 10, 2012, 12:29:51 PM10/10/12
to django...@googlegroups.com
Charles, como os decorators do python tem dois modos de assinarem funções, você pode tentar assinar diretamente no seu urls.

from django.views.decorators.csrf import csrf_exempt
url(r"^login/$", csrf_exempt(login), {"template_name": "seu/template/de/login.html"}, "login"),


--
*Charles Sartori

--
 
 



--
  • Software Engineering student at the Universidade Federal do Rio Grande do Norte;
  • Front-end Designer and Developer;
  • Python/Django Developer at the multmeio.com.br.

Charles Sartori

unread,
Oct 10, 2012, 1:29:39 PM10/10/12
to django...@googlegroups.com
Olá Luan, obrigado também pela resposta, então, eu tentei esse código que você sugeriu e o erro continua... como eu estou utilizando a view de login do django(django.contrib.auth.views.login), e nessa view tem um decorator csrf_protect eu gostaria de manter essa proteção e não tirar.

So para relembrar, o problema ocorre quando eu tento logar utilizando o form de uma aplicação desenvolvida em php(legado), utilziando diretamente o form renderizado pelo django(usando o {% csrf_token %} não tenho problemas, o form do projeto php é o seguinte:

<form name="loginform" id="loginform" action="http://meu.outro.dominio.com/login/" method="post">
....
</form>

Como nesse form eu não posso usar o {% csrf_token %}, acabo tendo esse erro. Vocês acham que essa solução pode resolver meu problema?
http://stackoverflow.com/questions/5100539/django-csrf-check-failing-with-an-ajax-post-request/5107878#5107878

--
*Charles Sartori

Caio Rogerio

unread,
Oct 10, 2012, 2:21:53 PM10/10/12
to django...@googlegroups.com
Já tentou fazer o django renderizar somente o form e o php ler isso por http com um file_get_contents?

2012/10/10 Charles Sartori <charles...@gmail.com>

--
 
 

George Ribeiro

unread,
Oct 10, 2012, 2:59:23 PM10/10/12
to django...@googlegroups.com
Charles, o django armazena o token em cookie, dá para pegar com javascript [1], no entanto acredito que ele mude o token
pra cada requisição e a aplicação é outra. Tente pegar o token via cookie com o php, pode ser uma solução, caso contrário
só desabilitando o token mesmo.

[1]: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

--
 
 

Reply all
Reply to author
Forward
0 new messages