【问题标题】:restframework-jwt how can I handle payload?rest framework-jwt 我如何处理有效负载?
【发布时间】:2018-12-07 05:51:42
【问题描述】:

我使用 Django restframework 来实现 api server。

我还使用 djangorestframework-jwt 进行令牌认证。

[urls.py]

from django.contrib import admin
from django.urls import path, include
from rest_framework_jwt.views import refresh_jwt_token

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('rest_auth.urls')),
    path('registration/', include('rest_auth.registration.urls')),
    path('refresh-token/', refresh_jwt_token),
]

一切正常。但我想知道如何从令牌中提取有效负载?

例如,有文章表。

[/article/serializers.py]

from rest_framework import serializers
from . import models

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Article
        fields = '__all__'

[模型.py]

from django.db import models

class Article(models.Model):
    subject = models.CharField(max_length=20)
    content = models.CharField(max_length=100)

[views.py]

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from . import models, serializers

class Article(APIView):
    def get(self, request, format=None):
        all_article = models.Article.objects.all()
        serializer = serializers.ArticleSerializer(all_article, many=True)

        return Response(data=serializer.data, status=status.HTTP_200_OK)

在这种情况下,我只想返回正确的响应 payload['userid'] == 文章的用户 ID。

如何从 jwt 令牌中提取用户名?

以前,我只是使用jwt而不是djangorestframework-jwt,所以只是解码请求数据并使用它。

但是现在我使用djangorestframework-jwt,我很困惑我该怎么做。

有什么解决办法吗?

谢谢。

【问题讨论】:

    标签: django-rest-framework django-rest-framework-jwt


    【解决方案1】:

    我在这里查看了图书馆的文档后解决了这个问题

    https://jpadilla.github.io/django-rest-framework-jwt/

    我需要重写所有函数以根据我的应用程序的要求返回自定义响应。

    还有我们需要在我的应用程序 settings.py 中的 JWT_AUTH 中指定的任何其他设置。

    JWT_AUTH = {
        'JWT_RESPONSE_PAYLOAD_HANDLER':
        'myapp.utils.jwt_response_payload_handler',
    }
    

    并且需要在我的应用程序的 util 文件夹中定义 jwt_response_payload_handler 函数以覆盖默认函数。

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2018-04-11
      • 1970-01-01
      • 2012-10-30
      • 2016-03-12
      • 2015-07-22
      • 2019-02-26
      • 2015-10-03
      • 2016-10-22
      相关资源
      最近更新 更多