【问题标题】:Why in an AllowAny view of Django I get 401 Unauthorized using Firefox but not using Edge or Postman?为什么在 Django 的 AllowAny 视图中,我使用 Firefox 得到 401 Unauthorized 但不使用 Edge 或 Postman?
【发布时间】:2021-02-10 16:58:15
【问题描述】:

我正在使用 knox LoginView 来登录我的后端。这是视图的代码:

class Login(LoginView):
    permission_classes = (AllowAny,)

    def post(self, request, format=None):
        serializer = AuthTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        login(request, user)
        return super(Login, self).post(request, format=None)

当我执行我的前端(使用 Angular 开发)并尝试使用 Microsoft Edge 登录时,一切正常。我得到令牌并将其保存在本地。如果我使用 Postman 执行 POST,结果相同。但是,如果我尝试使用 Firefox 做同样的事情,我会收到 401 Unauthorized with this JSON:

{"detail":"Invalid token."}

如果它是 AllowAny 视图,为什么它会要求提供令牌?为什么它在 Edge 和 Postman 中有效,而在 Firefox 中无效?

更多数据:

这是settings.py中的认证类:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'knox.auth.TokenAuthentication',
    ),
}

编辑:实际上,它可以使用 Firefox 开发者版。

【问题讨论】:

    标签: django django-rest-framework django-views backend django-rest-knox


    【解决方案1】:

    我解决了清理 cookie 的问题。

    【讨论】:

    • 清理 cookie 对我不起作用。我通过重启解决了。
    猜你喜欢
    • 2023-03-11
    • 2017-07-11
    • 1970-01-01
    • 2019-02-18
    • 2021-02-07
    • 2015-04-01
    • 2020-07-20
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多