0

更新

我刚刚将它添加到我的 settings.py 中:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES':  (
    'rest_framework.authentication.BasicAuthentication', **<--THIS!**
    'knox.auth.TokenAuthentication',
),
    }

现在,当我尝试使用令牌获取用户时,我得到了这个:

"detail": "用户名/密码无效。"

但我没有尝试登录,只获取带有令牌的用户。

最初的问题

我试图获取用户 api/todo 创建的所有待办事项,并获取用户 api/auth/user.. 但我不断收到此错误:

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

在前端我发送标题(在正文中尝试过,在查询中,没有任何工作)

const config = {headers: {Authorization: `Token ${token}`}}

所以我尝试在邮递员中,在标题选项卡中发送令牌 - 授权:令牌 fcabd79eb8f0954d9d29d48059ab38853c7f79c582aa2653a16b4b9e176b0225

我得到同样的错误。

这是我在前端的服务

async function query() {
    try {
        // tried both this: 
        return await axios.get(`http://127.0.0.1:8000/api/${types.TODO_API}/`,{headers : config.headers});        
        // and this: 
        return await axios.get(`http://127.0.0.1:8000/api/${types.TODO_API}/`, null, {headers : config.headers});
    } catch (err) {
        throw err;
    };
};

这是我的设置.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'corsheaders',
    'todo',
    'user',
    'knox'
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES':  (
        'knox.auth.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

这是 TodoViewSet

class TodoViewSet(viewsets.ModelViewSet):
    permission_classes = (permissions.IsAuthenticated, )
    serializer_class = TodoSerializer

    def get_queryset(self):
        return self.request.user.todo.all()

    def preform_create(self, serializer):
        serializer.save(owner = self.request.user)

这是 GetUserView

class GetUserView(generics.RetrieveAPIView):
    permission_classes = (permissions.IsAuthenticated,)
    serializer_class = UserSerializer

    def get_user(self):
        return self.request.user
4

0 回答 0