相关疑难解决方法(0)

Django Rest Framework 请求对 AllowAny 设置进行身份验证

我为应用程序创建了JWT 授权的后端。登录、注销、令牌检索和刷新都按预期工作正常。我今天早上添加了一个注册视图,它抛出了"detail": "Authentication credentials were not provided.您对未经身份验证的请求所期望的常见错误,因为这是默认设置(见下文)。

但是,因为这是一个注册端点,我不希望它只允许授权请求。(使用有效令牌进行检查后,视图的其余部分在您提供身份验证时按预期工作。)查看DRF 文档的权限部分,我认为将 permission_classes 包装器与 AllowAny 一起使用可以在这里工作,但它没有.

我错过了什么?我觉得permission_classes 装饰器应该覆盖'IsAuthenticated' 的默认设置吗?

我正在从 curl 在本地主机上进行测试:

curl -X POST -H "Content-Type: application/json" -d '{"email":"boba@athingy09876.com", "first_name": "boba", "last_name": "fett" "password":"xyz"}' http://localhost:8000/account/register/
Run Code Online (Sandbox Code Playgroud)

视图是:

@permission_classes(AllowAny)
@api_view(['POST'])
def register_user(request):
    from django.contrib.auth.models import User
    from rest_framework_jwt.views import obtain_jwt_token
    if request.user.is_authenticated():
        return Response ({"already_registered": "User with that username has already registered"}, status=status.HTTP_701_ALREADY_REGISTERED)
    data = request.data

    user, created = User.objects.get_or_create(username=data["email"],
                                               email=data["email"],
                                               first_name=data["first_name"],
                                               last_name=data["last_name"],
                                               password=data["password"])
    if created:
        token = …
Run Code Online (Sandbox Code Playgroud)

authentication python-2.7 jwt django-rest-framework django-1.6

5
推荐指数
2
解决办法
4728
查看次数

如何为 Django 启用 WSGIPassAuthorization?

我正在测试 Django API 端点,但我需要启用 WSGIPassAuthorization 才能接收 Authorization 标头。我应该在哪里启用它?

PS:我使用的是 macOS,但任何答案都可能有用!

django mod-wsgi wsgi django-wsgi django-rest-framework

5
推荐指数
1
解决办法
7443
查看次数

Django API 在本地工作,但部署在 Elastic Beanstalk 上时无法工作

我正在使用Django Rest FrameworkDjango Rest Framework JWT,但我遇到了有关本地行为与外部行为的问题。

当我请求POST获取 JWT 令牌时,本地和我的 EC2 实例上的一切都按预期工作。但是,一旦我有了令牌,当我向需要身份验证的服务器发出请求时,只有我的本地服务器返回预期的响应。在我部署的服务器上,我收到以下错误:

{"detail":"Authentication credentials were not provided."}

到目前为止我尝试过的:

http.conf通过 sshing 进入我的服务器并启用WSGIPathAuthorization. (在这里看到类似的帖子并尝试了解决方案)

什么可能导致这种行为?我的本地计算机和我部署的代码是相同的,这让我相信这与服务器端配置有关。

感谢所有帮助。谢谢!

django amazon-web-services jwt django-rest-framework

5
推荐指数
2
解决办法
1020
查看次数