[Day25] - Django-REST-Framework Authencation Permission 介绍

今天我们来介绍 DRF 的 Authentication,了解 DRF 如何加入 Authencation 的机制。

Authentication 介绍

在网站应用服务中,若有用户个别系统需求类型的网站,都会需要 Authentication 功能,用以确保只有自己能够读取自己的档案。有时也会需要有权限的分层,随着使用者的权限不同,其在网站当中能做的事也不同。这些都须透过 Authentication 以及 permission 进行管理。

Authentication / Permission 实作

设定 settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ]
}

以及增加 INSTALLED_APPS

INSTALLED_APPS =[
...
'rest_framework.authtoken'
...
]

migrate 资料库

python manage.py migrate

修改 urls.py

同样的我们必须将路径导向至我们期望之页面。在 urls.py 中新增以下路径

  • products.urls
  • rest_framework.urls
  • rest_auth.urls
    其中 rest_framework.urls, rest_auth.urls 路径可以连接到 Django auth 相关功能页
    path("api/", include("products.urls")),
    path("api-auth/", include("rest_framework.urls")),
    path("api/rest-auth/", include("rest_auth.urls")),

新增 view

views.py

class ProductListView(generics.ListAPIView):
    queryset = Products.objects.all()
    serializer_class = ProductSerializer
    permission_classes = [IsAuthenticated]

其中 permission_classes 可以在此当中进行 Authentication 的认证,若是没有经过认证,则无法读取此 View 回传的资讯。

结语

能有 Authentication / Permission 管理机制是很幸福的一件事,因为其中的逻辑其实需要花许多时间进行验证及思考。我们可以透过 Django 的机制进行基本的开发,若是有特殊需求,亦可以客制化的更改其功能。

参考资料

https://www.django-rest-framework.org/api-guide/authentication/


<<:  [24] 用 python 刷 Leetcode: 66 plus-one

>>:  [Day23] 物件传参考范例

[Day 2] 资料产品第一层 - 原始资料

就像稻米之於米苔目,小麦之於面疙瘩,原始资料就是任何资料产品最基础的存在。 在研究所修读统计的时候,...

Day 14. Hashicorp Vault: Backup (Consul)

Hashicorp Vault: Backup (Consul) 在Day 12 有提到使用Cons...

[DAY18]跟 Vue.js 认识的30天 - Vue 混入(`mixin`)

混入(mixin)似乎也是个初学 Vue 比较少被用到的功能,但还是照顺序的了解一下。 基础运用 在...

Day 01 前言

这次有幸能藉由铁人赛重新认识及学习Arm的相关技术, 以下为这次参赛的课题以及时程(会再陆续更新完成...

资料集格式 | ML#Day13

根据我们要做的题目,获得的结果会是对应的订单总金额,而订单总金额是一个可能范围很大的数值,也就是连续...