django @login_required是否可以在移动应用程序使用的API上使用?

时间:2019-05-29 15:31:46

标签: django authentication mobile csrf

我们正在使用django-notifications-hq在我们的应用中向用户提供持久性通知。直到最近,他们还只居住在Web应用程序中,但是现在我们也希望在移动应用程序中显示通知。 另外,我们的服务器是使用CSRF设置的。

django-notifications-hq提供的所有端点都使用@login_required注释来验证用户已通过身份验证。

但是,当我们尝试从移动应用中调用这些端点中的任何一个时,我们会收到403响应。具体来说,第一个OPTIONS请求返回200,但是随后对这些API的请求始终返回403。

当我们使用django-rest-framework的permissions.IsAuthenticated时,这不是 问题。

403在响应中返回此值:

  <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>


  <p>You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.</p>
  <p>If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for &#39;same-origin&#39; requests.</p>

这表明这是CSRF问题,即使移动应用程序显然未在其请求中提供cookie(基于令牌的授权)。

这是@login_required的一个普遍问题(也许根本无法与基于令牌的授权一起使用)还是我们这方面的一些错误配置?寻找解决方案时找不到明确的答案。

django的@login_required与django-rest-framework @permission_classes((permissions.IsAuthenticated,))之间在实现上有显着差异吗?

0 个答案:

没有答案