django:Rest-auth 和 Allauth for Facebook 注册 API 需要 CSRF 令牌



使用allauthdjango-rest-auth创建Facebook登录API。我已经遵循了这两个包文档并使用了 rest-auth 文档中的示例。我已经按照所有步骤操作,我可以从DRF可浏览的API视图中成功使用此API,并且它已成功执行注册。当我从其他地方(如邮递员)尝试此 API 时,它要求提供 CSRF token.
我尝试使用csrf_exempt装饰器,但这似乎对这个网址无效。

这是我的网址配置:

url(r'^rest-auth/facebook/$', csrf_exempt(FacebookLogin.as_view()), name='fb_login'),

其余内容与django-rest-auth文档中提到的相同。

无法弄清楚我错过了什么,或者我应该在哪里寻找修复。任何帮助诊断问题将不胜感激。

TL;DR 在FacebookLogin视图中设置authentication_classes = ()

登录和注册视图应该没有身份验证检查。我假设您的 DRF DEFAULT_AUTHENTICATION_CLASSES按顺序设置为令牌身份验证和会话身份验证。因此,当您的请求正在处理时,服务器找不到身份验证令牌,因此作为回退,它会尝试执行会话身份验证,这需要 CSRF,这反过来会导致 CSRF 失败。

最新更新