我为应用程序创建了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
我正在测试 Django API 端点,但我需要启用 WSGIPassAuthorization 才能接收 Authorization 标头。我应该在哪里启用它?
PS:我使用的是 macOS,但任何答案都可能有用!
我正在使用Django Rest Framework和Django Rest Framework JWT,但我遇到了有关本地行为与外部行为的问题。
当我请求POST获取 JWT 令牌时,本地和我的 EC2 实例上的一切都按预期工作。但是,一旦我有了令牌,当我向需要身份验证的服务器发出请求时,只有我的本地服务器返回预期的响应。在我部署的服务器上,我收到以下错误:
{"detail":"Authentication credentials were not provided."}
到目前为止我尝试过的:
http.conf通过 sshing 进入我的服务器并启用WSGIPathAuthorization. (在这里看到类似的帖子并尝试了解决方案)
什么可能导致这种行为?我的本地计算机和我部署的代码是相同的,这让我相信这与服务器端配置有关。
感谢所有帮助。谢谢!