我有一个叫做UserViewSet
的类:
class UserViewSet(viewsets.ModelViewSet):
queryset = UserData.objects.all()
serializer_class = UserSerializer
from rest_framework.permissions import IsAuthenticated
from rest_framework.authentication import TokenAuthentication
permission_classes = (IsAuthenticated,)
authentication_classes = (TokenAuthentication,)
@action(methods=['post'], detail=False)
def signup_user(self, request):
request_data = request.query_params
if len(request_data) == 0:
return Response("Empty params !")
现在我想注册一个新用户,它会引发这个错误:
{“detail”:“未提供身份验证凭据。”}
这是因为Authentication
和Permission
类。
那么在signup
函数中禁用这些类的正确方法是什么呢?
我使用了authentication_classes
和permission_classes
装饰器,但它对这个函数没有影响。
2条答案
按热度按时间kcwpcxri1#
action decorator允许指定特定于action的权限类。这应该执行以下操作:
(don't forget importing
AllowAny
)wydwbb8l2#
而对于默认的操作,即create、retrieve、update、partial_update、destroy和list,你可以覆盖get_permissions方法(仅适用于rest mixin的子类),即
在这一点上,你甚至可以验证与http方法,即POST,GET,PUT ...通过引用
self.request
。通过重写get_authenticators方法,可以对authentication_classes执行相同的操作