Django REST Framework SimpleJWT 使用教程
1. 项目的目录结构及介绍
Django REST Framework SimpleJWT 是一个用于 Django REST Framework 的 JWT(JSON Web Token)认证插件。以下是该项目的目录结构及其介绍:
djangorestframework-simplejwt/
├── djangorestframework_simplejwt/
│ ├── __init__.py
│ ├── authentication.py
│ ├──backends.py
│ ├──exceptions.py
│ ├──models.py
│ ├──settings.py
│ ├──tokens.py
│ ├──token_blacklist/
│ │ ├──__init__.py
│ │ ├──admin.py
│ │ ├──apps.py
│ │ ├──migrations/
│ │ ├──models.py
│ │ ├──serializers.py
│ │ ├──views.py
│ ├──utils.py
│ ├──views.py
├── docs/
│ ├── conf.py
│ ├── index.rst
│ ├── ...
├── tests/
│ ├── __init__.py
│ ├── test_authentication.py
│ ├── test_backends.py
│ ├── test_exceptions.py
│ ├── test_models.py
│ ├── test_settings.py
│ ├── test_tokens.py
│ ├── test_utils.py
│ ├── test_views.py
├── .gitignore
├── .travis.yml
├── LICENSE
├── MANIFEST.in
├── README.md
├── setup.cfg
├── setup.py
├── tox.ini
主要目录和文件介绍:
djangorestframework_simplejwt/
: 核心代码目录。authentication.py
: 认证相关逻辑。backends.py
: 认证后端逻辑。exceptions.py
: 自定义异常。models.py
: 数据模型。settings.py
: 配置文件。tokens.py
: 令牌处理逻辑。token_blacklist/
: 令牌黑名单相关逻辑。utils.py
: 工具函数。views.py
: 视图逻辑。
docs/
: 文档目录。tests/
: 测试代码目录。.gitignore
: Git 忽略文件配置。LICENSE
: 项目许可证。README.md
: 项目说明文档。setup.py
: 安装脚本。
2. 项目的启动文件介绍
Django REST Framework SimpleJWT 的启动文件主要是 djangorestframework_simplejwt/views.py
和 djangorestframework_simplejwt/authentication.py
。
views.py
该文件包含了处理 JWT 认证请求的视图函数,如 TokenObtainPairView
和 TokenRefreshView
。这些视图函数用于生成和刷新 JWT 令牌。
authentication.py
该文件包含了 JWT 认证的逻辑,如 JWTAuthentication
类,用于在请求中验证 JWT 令牌。
3. 项目的配置文件介绍
Django REST Framework SimpleJWT 的配置文件主要是 djangorestframework_simplejwt/settings.py
。
settings.py
该文件包含了项目的默认配置,如 JWT 令牌的有效期、加密密钥等。用户可以在 Django 项目的 settings.py
文件中覆盖这些默认配置。
例如:
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': True,
'ALGORITHM': 'HS256',
'SIGNING_KEY': SECRET_KEY,
'VERIFYING_KEY': None,
'AUTH_HEADER_TYPES': ('Bearer',),
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',