请教Django REST framework的一些问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教Django REST framework的一些问题相关的知识,希望对你有一定的参考价值。

参考技术A restful 通过http的状态码来做为操作结果的执行状态的,比如访问/post/<id>/ 返回404 就是不存在,200 就是存在, 你发送一个post请求到 /post/ 接口上,返回201 表示创建成功,返回403表示没有权限之类的。rest framework 返回的数据其实是一个分页的结果,你可以通过定制paginationSerializer来完成你的需求

Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers

【中文标题】Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers【英文标题】:Django-rest-framework and django-rest-framework-jwt APIViews and validation Authorization headers 【发布时间】:2019-05-12 20:56:08 【问题描述】:

我正在使用 DRF 和 DRF-jwt 来保护我的 API。目前我有一些这样写的CBV

class Organization(APIView):
    permission_classes = (IsAuthenticated,)
    @method_decorator(csrf_exempt, name='dispatch')
    class OfficeVisitsOverview(APIView):
        def post(self, request, *args, **kwargs):
            cursor = connection.cursor()
            (before, today) = getDateRange()
            cursor.execute("SELECT format(COUNT(*), 'N0') \
                            FROM Medi_OfficeVisit \
                            WHERE ( cast(VisitDate as date) BETWEEN '0' AND '1' ) \
                    ".format(before, today))
            data = dictfetchall(cursor)
            connection.close()
            return JsonResponse("numberOfOVs": data[0][""])

根据我的理解,APIView 和权限类 IsAuthenticated 确保存在与请求标头一起发送的授权令牌。你怎么能确定没有人修改过 JWT?我怎么知道我的 Django 应用程序中的 Secret_Token 每次都被用来解码/编码/验证/验证每个请求接收/发送的 JWT?这对我的 API 向公众开放是否足够安全?

【问题讨论】:

【参考方案1】:

经过身份验证只需确保当前 request.user.is_authenticated 为 True。检查标头、验证令牌等并设置 User.is_authenticated 是身份验证后端的责任。这是您在设置 rest-framework-jwt 时添加到设置文件中的一个。这是一个专为安全身份验证而创建的应用程序,所以是的,这就足够了。但是你还是要照顾其他方面的,比如 SSL、sql 注入等等(搜索 Django 安全性)。 警告!不要使用 .format 创建 SQL 查询,因为这是 SQL 注入的直接方式。如果您稍后使用一些用户提供的参数进行查询,您将处于危险之中。将参数作为第二个参数传递给 cursor.execute 或使用 ORM 来避免这种情况。

【讨论】:

以上是关于请教Django REST framework的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

Django REST Framework:序列化程序上下文如何工作?

Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers

Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证

怎么安装django rest framework

django rest framework中文介绍

17-Django-Django REST framework-REST framework及RESTful简介