在 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" }
在这里,我们添加了 djoser 和 restframework 作为应用程序。然后我们添加了 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 -
在这里,您将通过提供用户名和密码为用户生成令牌。
广告