Django-Ninja-JWT 使用教程
1. 项目介绍
Django-Ninja-JWT 是一个为 Django-Ninja 框架提供的 JSON Web Token (JWT) 认证插件。它是基于 Jazzband 的 Simple JWT 项目开发的,专门为 Django-Ninja 框架进行了适配,并移除了对 Django REST Framework (DRF) 的依赖。Django-Ninja-JWT 提供了 JWT 认证的基本功能,包括令牌的获取、刷新和验证。
2. 项目快速启动
2.1 安装 Django-Ninja-JWT
首先,使用 pip 安装 Django-Ninja-JWT:
pip install django-ninja-jwt
2.2 配置 Django 项目
在 Django 项目的 settings.py
文件中,添加 ninja_jwt
到 INSTALLED_APPS
:
INSTALLED_APPS = [
...
'ninja_jwt',
...
]
2.3 注册控制器
在 Django-Ninja 的 API 中注册 NinjaJWTDefaultController
控制器:
from ninja_jwt.controller import NinjaJWTDefaultController
from ninja_extra import NinjaExtraAPI
api = NinjaExtraAPI()
api.register_controllers(NinjaJWTDefaultController)
2.4 测试 JWT 认证
使用 curl 命令测试 JWT 认证功能:
curl -X POST -H "Content-Type: application/json" -d '{"username": "davidattenborough", "password": "boatymcboatface"}' http://localhost:8000/api/token/pair
返回结果将包含 access
和 refresh
令牌。
3. 应用案例和最佳实践
3.1 自定义控制器
如果需要自定义 JWT 认证的路由,可以继承 TokenObtainPairController
和 TokenVerificationController
控制器,并进行修改:
from ninja_extra import api_controller
from ninja_jwt.controller import TokenObtainPairController
@api_controller('token', tags=['Auth'])
class MyCustomController(TokenObtainPairController):
"""自定义获取和刷新令牌的路由"""
...
api.register_controllers(MyCustomController)
3.2 使用本地化
为了支持本地化/翻译,确保在 INSTALLED_APPS
中包含 ninja_jwt
:
INSTALLED_APPS = [
...
'ninja_jwt',
...
]
4. 典型生态项目
4.1 Django-Ninja
Django-Ninja 是一个基于 Django 的快速 API 开发框架,提供了简洁的 API 定义和强大的功能。Django-Ninja-JWT 是 Django-Ninja 生态系统中的一个重要组件,为开发者提供了 JWT 认证的支持。
4.2 Django REST Framework (DRF)
虽然 Django-Ninja-JWT 移除了对 DRF 的依赖,但 DRF 本身也是一个非常流行的 Django API 开发框架,提供了丰富的功能和插件。开发者可以根据项目需求选择合适的框架。
4.3 Simple JWT
Simple JWT 是 Django REST Framework 的一个 JWT 认证插件,Django-Ninja-JWT 是基于 Simple JWT 开发的,因此两者在功能和实现上有一定的相似性。开发者可以根据项目需求选择合适的 JWT 认证插件。
通过以上步骤,您可以快速上手并使用 Django-Ninja-JWT 进行 JWT 认证开发。