【发布时间】:2019-08-14 12:07:18
【问题描述】:
当我想使用 CreateAPIView 创建对象时遇到问题,我收到以下消息: "detail": "未提供身份验证凭据。"。
我使用 rest-auth 和 rest-authtoken 应用程序。
这是我到目前为止所做的:
models.py
class CustomUser(AbstractUser):
objects = CustomUserManager()
is_normal_user = models.BooleanField(default=False)
is_corporate_user = models.BooleanField(default=False)
class CompanyProfile(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
corporate_name = models.CharField(max_length=30)
serializers.py
class CompanyProfileSerializer(serializers.ModelSerializer):
class Meta:
model = CompanyProfile
fields = ['user', 'corporate_name',]
read_only_fields = ('id',)
views.py
class Authorized_Company_User(permissions.BasePermission):
def has_permission(self, request, view):
return bool(request.user and request.user.is_corporate_user)
class CompanyCreateProfileView(generics.CreateAPIView):
#queryset = CompanyProfile.objects.all()
serializer_class = CompanyProfileSerializer
#authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated, Authorized_Company_User)
我想知道我是否需要定义create函数,并使用get方法来获取用户authtoken。
【问题讨论】:
-
一般情况下,需要向api提供一些认证数据。它可以在 cookie 或特定标头中提供。有没有在客户端获取token并发送给api的机制,供后续请求使用?
-
是的,我在我的网络浏览器上使用标题扩展。我应该依靠它来构建我的网络应用程序吗?
标签: django django-rest-framework django-rest-auth