如何允许匿名 post 请求,但拒绝 Django 中未经授权的获取请求?
How to allow anonymous post requests, but deny unauthorized get requests in django?
在 C# 中,您可以轻松地将 [AllowAnonymous] 附加到请求,以便可以使用该特定方法。然而,在 Django 中,我对视图、序列化器、...
有点困惑
ViewSet 允许您查看某个 Serializer class 包含的内容,我说得对吗?如果是这样,我当然希望在用户的情况下隐藏它。
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
我就是这样实现的,效果很好。因此,当我转到 http://127.0.0.1:8000/api/users/ 时,我收到一条错误消息,提示我未通过身份验证。
现在的问题是注册新用户。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email', 'password']
extra_kwargs = {'password': {'write_only': True, 'required': True}}
def create(self, validated_data, AllowAny):
user = User.objects.create_user(**validated_data)
return user
当我在我的 Angular 应用程序中使用新注册的 userData 使用 post 请求点击 http://127.0.0.1:8000/api/users/ 时,我显然遇到了身份验证错误。
如何解决我或任何没有足够权限的人不允许查看用户数据,但每个人都可以创建 (post) 新用户的问题?
重写 get_permissions(...)
方法 ModelViewSet
as,
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
authentication_classes = (TokenAuthentication,)
<b>permission_classes = (IsAuthenticated,) # default permission class for this view</b>
<b>def get_permissions(self):
if self.request.method == 'POST':
return []
return super().get_permissions()</b>
在 C# 中,您可以轻松地将 [AllowAnonymous] 附加到请求,以便可以使用该特定方法。然而,在 Django 中,我对视图、序列化器、...
有点困惑ViewSet 允许您查看某个 Serializer class 包含的内容,我说得对吗?如果是这样,我当然希望在用户的情况下隐藏它。
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
我就是这样实现的,效果很好。因此,当我转到 http://127.0.0.1:8000/api/users/ 时,我收到一条错误消息,提示我未通过身份验证。
现在的问题是注册新用户。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email', 'password']
extra_kwargs = {'password': {'write_only': True, 'required': True}}
def create(self, validated_data, AllowAny):
user = User.objects.create_user(**validated_data)
return user
当我在我的 Angular 应用程序中使用新注册的 userData 使用 post 请求点击 http://127.0.0.1:8000/api/users/ 时,我显然遇到了身份验证错误。
如何解决我或任何没有足够权限的人不允许查看用户数据,但每个人都可以创建 (post) 新用户的问题?
重写 get_permissions(...)
方法 ModelViewSet
as,
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
authentication_classes = (TokenAuthentication,)
<b>permission_classes = (IsAuthenticated,) # default permission class for this view</b>
<b>def get_permissions(self):
if self.request.method == 'POST':
return []
return super().get_permissions()</b>