【问题标题】:how to use django REST JWT authorization and authentication in class based views如何在基于类的视图中使用 django REST JWT 授权和身份验证
【发布时间】:2018-10-05 07:37:12
【问题描述】:

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

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

示例。假设我只想允许用户在拥有正确权限的情况下创建批准的场所。我会在这个视图中添加什么来访问用户?

我知道 django 有 request.user 但我该如何打开它?如果没有令牌传递到标头,它是否总是打开并且 request.user 为空?还是中间件?我最终遇到的问题是到目前为止有很多信息,但在视图上实际使用 JWT 的信息很少。

请帮忙。

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

Django REST 框架 jwt 文档 https://jpadilla.github.io/django-rest-framework-jwt/

Django 休息框架权限文档 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)

【问题讨论】:

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


    【解决方案1】:

    要使用JWT认证,需要做如下安装步骤:https://jpadilla.github.io/django-rest-framework-jwt/#installation

    完成后,您可以通过简单地添加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,您可以这样做:

    def post(self, request, *args, **kwargs):
        user = request.user
        ...
    

    【讨论】:

    • 我如何导入 JSONWebTokenAuthentication tho ?
    • 没关系我知道了from rest_framework_jwt.authentication import JSONWebTokenAuthentication
    猜你喜欢
    • 2017-07-21
    • 2013-04-17
    • 2018-08-25
    • 2019-01-18
    • 2011-10-01
    • 2021-03-25
    • 2018-01-20
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多