授权后CSRF验证失败

时间:2014-01-30 12:39:22

标签: django oauth-2.0 django-rest-framework

当我尝试通过

进行授权时
curl -X POST -d "grant_type=password&username=myusername&password=mypassword" http://localhost:8000/oauth2/authorize/

我禁止403:CSRF验证失败。请求中止。我无法理解为什么,任何帮助将不胜感激。

顺便说一句,我使用Django OAuth Toolkit进行身份验证。

编辑:我知道CSRF保护以及如何在django视图和表单中使用它,我正在使用一个名为Django OAuth Toolkit的包来进行oauth 2授权,它不应该要求csrf令牌。关于我要实现的目标,有一些信息here

3 个答案:

答案 0 :(得分:5)

我很惭愧地说我将请求发送到错误的网址,我应该将其发送到http://localhost:8000/oauth2/token/

curl -X POST -d "grant_type=password&username=myusername&password=mypassword&client_id=myclientid"  http://localhost:8000/oauth2/token/

答案 1 :(得分:0)

您需要在POST数据中添加csrf令牌。

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

答案 2 :(得分:0)

阅读关于内置Cross Site Request Forgery protection的Django的文档可能是值得的。

Django视图的任何帖子都需要csrfmiddlewaretoken设置,否则你将获得403.你需要包含它,或者来自CSRF保护的exempt your view(更喜欢前一种方法)如果可能的话。)