我正在关注本教程https://yeti.co/blog/oauth2-with-django-rest-framework/但后来我遇到了一个问题。我可以注册一个新用户,但是当我尝试使用以下格式获取令牌时:
curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" http://<client_id>:<client_secret>@localhost:8000/o/token/
我会收到一个错误,说有credential
错误。但是,如果我使用 创建一个新用户the admin page
,我将能够获得令牌。我的猜测是,在sign_up
视图中,密码不是hashed
,所以有一些错误,但我不知道如何更改它。
序列化程序.py 文件:
from rest_framework import serializers
from django.contrib.auth.models import User
class SignUpSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password')
write_only_fields = ('password',)
视图.py 文件:
from rest_framework import generics
from permissions import IsAuthenticatedOrCreate
from django.contrib.auth.models import User
from users.serializers import SignUpSerializer
class SignUp(generics.CreateAPIView):
queryset = User.objects.all()
serializer_class = SignUpSerializer
permission_classes = (IsAuthenticatedOrCreate,)