如何在基于类的视图中使用django REST JWT授权和身份验证

时间:2018-04-24 23:09:29

标签: authentication permissions django-rest-framework authorization django-rest-framework-jwt

我正在使用JWT身份验证我正在使用这种类型的授权应用程序。

我试图弄清楚如何在视图中使用它。

实施例。假设我只想让用户在拥有正确权限的情况下创建一个已批准的场所。我将添加到此视图以获取对用户的访问权限?

我知道django有request.user,但我该怎么做呢?是否始终打开,如果没有令牌传递到标头中,request.user为null?还是中间件?我最终遇到的问题是有很多信息到达这一点,但在视图上实际使用JWT却很少。

请帮忙。

# for creating an approved venue add ons later
class CreateApprovedVenue(CreateAPIView):
    queryset = Venue.objects.all()
    serializer_class = VenueSerializer

jwt docs https://getblimp.github.io/django-rest-framework-jwt/

其他框架权限文档 http://www.django-rest-framework.org/api-guide/permissions/

所以我发现了这个资源,现在正在查看它。 https://code.tutsplus.com/tutorials/how-to-authenticate-with-jwt-in-django--cms-30460

这个例子是光明的:

# users/views.py
class CreateUserAPIView(APIView):
    # Allow any user (authenticated or not) to access this url 
    permission_classes = (AllowAny,)

    def post(self, request):
        user = request.data
        serializer = UserSerializer(data=user)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)

1 个答案:

答案 0 :(得分:0)

要使用JWT身份验证,您需要执行以下安装步骤:https://getblimp.github.io/django-rest-framework-jwt/#installation

完成后,您可以通过简单地添加JsonExtensions.FromDelimitedJson()来包含身份验证,如下所示

authentication_classes

在所有请求方法中,您都可以# for creating an approved venue add ons later class CreateApprovedVenue(CreateAPIView): authentication_classes = (JSONWebTokenAuthentication, ) queryset = Venue.objects.all() serializer_class = VenueSerializer 使用。对于request.user你可以这样做:

CreateAPIView