iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0

今天我們來介紹 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/


上一篇
[Day24] - Django-REST-Framework User Management
下一篇
[Day26] - Django-REST-Framework API 期末專案實作 (一)
系列文
使用Django Rest Framework, Docker, Docker Compose 製作後端服務應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言