Django Ninja JWT 使用教程
项目介绍
Django Ninja JWT 是一个为 Django Ninja 框架设计的 JSON Web Token (JWT) 认证插件。该项目旨在为 Django Ninja 提供一个强大且易于扩展的 JWT 认证解决方案。Django Ninja JWT 是基于 Simple JWT 开发的,专门为 Django Ninja 框架进行了优化和适配,移除了对 Django REST Framework 的依赖。
项目快速启动
安装
首先,通过 pip 安装 Django Ninja JWT:
pip install django-ninja-jwt
配置
在 Django 项目的 settings.py
文件中,添加 ninja_jwt
到 INSTALLED_APPS
:
INSTALLED_APPS = [
...
'ninja_jwt',
]
然后,在你的 Django Ninja API 中注册 NinjaJWTDefaultController
:
from ninja_jwt.controller import NinjaJWTDefaultController
api = NinjaAPI()
api.add_router("", NinjaJWTDefaultController)
测试
使用 curl 进行测试,确保 JWT 认证正常工作:
curl -X POST -H "Content-Type: application/json" -d '{"username": "davidattenborough", "password": "boatymcboatface"}' http://localhost:8000/api/token/pair
应用案例和最佳实践
应用案例
Django Ninja JWT 可以广泛应用于需要 JWT 认证的 Web 服务,特别是在微服务架构中。例如,一个图书管理 API 可以使用 Django Ninja JWT 来保护其资源,确保只有授权用户可以访问。
最佳实践
- 安全性:确保 JWT 密钥的安全,不要在代码中硬编码。
- 过期时间:合理设置 JWT 的过期时间,平衡安全性和用户体验。
- 黑名单:使用黑名单机制来撤销已发放的 JWT。
典型生态项目
Django Ninja JWT 可以与以下项目结合使用,构建更强大的应用:
- Django Ninja Extra:提供额外的功能和工具,增强 Django Ninja 的开发体验。
- Django REST Framework:虽然 Django Ninja JWT 不依赖于 DRF,但在某些情况下,结合使用可以提供更丰富的功能。
- Django Channels:用于实现 WebSocket 支持,结合 JWT 认证可以实现实时通信的安全性。
通过以上步骤和建议,你可以快速启动并有效使用 Django Ninja JWT 项目,构建安全且高效的 Web 服务。