Django Rest Framework身份验证被拒绝

Scr*_*eer 6 python django django-rest-framework

我使用PSA在Django上验证了我的用户并让用户在用户模型中注册,甚至令牌模型都注册了用户和令牌.

但是当我发送此请求时:

curl -X POST -H "Authorization:Token 87e939184457ccc064485444a90e3ebf417xxxxx" http://192.168.x.x:8000/user-profiles/>error.html 
Run Code Online (Sandbox Code Playgroud)

我明白了

{"detail":"您无权执行此操作."}

如果我寄这个:

curl -X POST --user "VedantDasSwain:87e939184457ccc064485444a90e3ebf417xxxxx" http://192.168.x.x:8000/user-profiles/>error.html 
Run Code Online (Sandbox Code Playgroud)

我明白了

{"detail":"用户名/密码无效"}

这些是我的设置文件中的相关代码段:

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',
        'rest_framework.permissions.IsAdminUser',),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
Run Code Online (Sandbox Code Playgroud)

这是PSA设置的一部分:

AUTHENTICATION_BACKENDS = (
    'social.backends.facebook.FacebookOAuth2',

    'django.contrib.auth.backends.ModelBackend',
)
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这种类型的东西?这是什么解决方案?

Scr*_*eer 4

我的印象是这个元组意味着用户要么经过身份验证,要么是管理员。

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',
        'rest_framework.permissions.IsAdminUser',)
Run Code Online (Sandbox Code Playgroud)

但是,我从元组中删除了“rest_framework.permissions.IsAdminUser”,然后它给了我正确的结果

curl -X POST -H "Authorization:Token 87e939184457ccc064485444a90e3ebf417xxxxx" http://192.168.x.x:8000/user-profiles/>error.html 
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样。这几乎是一个侥幸修复。如果有人知道为什么会这样,请告诉我