DRF-request.user在从提取中调用api期间登录时在APIView中返回AnonymousUser

qunayu

我已经构造了一个APIView:

class CustomAPIView(APIView):
    def get(self, request, *args, **kwargs):
        if not request.user or not request.user.is_authenticated():
            return Response("User not logged in", status=status.HTTP_403_FORBIDDEN)
    # Other stuff

在我的html模板中,我正在使用fetchAPI对其进行调用:

 fetch('/api/request/url/', {method: 'get'})
            .then(
             // Process info );

我已经通过所有这些进行登录,但是总是收到403响应,其中APIView返回AnonymousUser的request.user变量。但是,如果我尝试手动访问api网址,则一切正常。

有人可以指出我所缺少的吗?

提前致谢。

萨吉·泽维尔

fetch api的问题在于,通过defualt不会将cookie发送到服务器。

默认情况下,如果站点依赖于维护用户会话,则抓取将不会从服务器发送或接收任何cookie,从而导致未经身份验证的请求(要发送cookie,必须设置凭据初始化选项)。

因此,您必须在获取请求中设置凭据:“ same-origin”

fetch('/api/request/url/', {method: "GET", credentials: 'same-origin'})
            .then(
             // Process info );

对于跨域请求,请使用 credentials: 'include'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章