今天我們來介紹 DRF 的 Authentication,了解 DRF 如何加入 Authencation 的機制。
在網站應用服務中,若有用戶個別系統需求類型的網站,都會需要 Authentication 功能,用以確保只有自己能夠讀取自己的檔案。有時也會需要有權限的分層,隨著使用者的權限不同,其在網站當中能做的事也不同。這些都須透過 Authentication 以及 permission 進行管理。
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 中新增以下路徑
path("api/", include("products.urls")),
path("api-auth/", include("rest_framework.urls")),
path("api/rest-auth/", include("rest_auth.urls")),
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/