在 Django 中使用 djoser 进行无需视图的 Token 认证


Djoser 是一个用于 Django 的简单身份验证库。它用于生成用于身份验证的令牌;此生成的令牌是通过获取三个字段生成的:用户名、电子邮件密码。它仅适用于 POST 请求,但您可以添加其前端。

示例

创建一个 Django 项目和一个应用。我将它们命名为 "DjoserExample""myapp"

安装两个包 -

pip install djoser
pip install djangorestframework

settings.py 中,添加以下行 -

INSTALLED_APPS = [
#below every other apps
   'myapp',
   'rest_framework',
   'rest_framework.authtoken',
   'djoser'
]

# Below template variable
REST_FRAMEWORK = {
   'DEFAULT_AUTHENTICATION_CLASSES': (
      'rest_framework.authentication.TokenAuthentication',
   ),
   'DEFAULT_PERMISSION_CLASSES': [
      'rest_framework.permissions.IsAuthenticated',
   ]
}
DJOSER = {
   "USER_ID_FIELD": "username"
}

在这里,我们添加了 djoserrestframework 作为应用程序。然后我们添加了 REST framework 的身份验证后端,并且对于 djoser,我们添加了 用户 ID 字段(即索引字段)。

我们使用 Django 的默认用户身份验证数据库,因此我们实际上不需要应用程序。

转到项目的 urls.py 并添加以下行 -

from django.contrib import admin
from django.urls import path,include,re_path

urlpatterns = [
   path('admin/', admin.site.urls),
   path('',include('myapp.urls')),
   path(r'api/v1/', include('djoser.urls')),
   path(r'api/v1/token/login, include('djoser.urls.authtoken'))
]

在这里,我们定义了 djoser 管理员 url,然后定义 djoser 身份验证后端。

有了这些,一切都设置好了。现在在终端上运行这些命令并检查输出 -

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

输出

在 http://127.0.0.1:8000/api/v1/users/ -

在这里,您将创建用户。

在 http://127.0.0.1:8000/api/v1/token/login -

在这里,您将通过提供用户名和密码为用户生成令牌。

更新于: 2021年8月26日

2K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告