Django REST Framework SimpleJWT 入门指南

Django REST Framework SimpleJWT 入门指南

djangorestframework-simplejwt djangorestframework-simplejwt 项目地址: https://gitcode.com/gh_mirrors/dja/djangorestframework-simplejwt

项目简介

Django REST Framework SimpleJWT 是一个为 Django REST Framework 提供 JSON Web Token 认证支持的扩展库。它实现了完整的 JWT 认证流程,包括令牌的签发、刷新和验证功能,是构建现代 API 服务的理想选择。

环境要求

在开始使用 SimpleJWT 之前,请确保您的开发环境满足以下要求:

  • Python 版本:3.8、3.9、3.10 或 3.11
  • Django 框架版本:3.2、4.1 或 4.2
  • Django REST Framework 版本:3.12、3.13 或 3.14

虽然官方仅明确支持上述版本组合,但其他版本通常也能正常工作。如需在其他版本环境中使用,可以自行测试兼容性。

安装步骤

安装 SimpleJWT 非常简单,只需使用 pip 包管理工具执行以下命令:

pip install djangorestframework-simplejwt

可选加密依赖

如果您计划使用 RSA 或 ECDSA 等数字签名算法来编码或解码令牌,需要额外安装 cryptography 库。推荐使用以下方式安装:

pip install djangorestframework-simplejwt[crypto]

这种安装方式会将 cryptography 作为必需依赖安装,避免在项目依赖管理中被误认为无用依赖而删除。

项目配置

认证类配置

在 Django 项目的 settings.py 文件中,需要将 JWTAuthentication 添加到 REST_FRAMEWORK 的认证类列表中:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # 其他认证类...
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
}

URL 路由配置

在项目的根 urls.py 文件中,添加 SimpleJWT 提供的视图路由:

from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
    TokenVerifyView
)

urlpatterns = [
    # 其他路由...
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'),
]

这三个端点分别用于:

  1. 获取令牌对(访问令牌和刷新令牌)
  2. 刷新访问令牌
  3. 验证令牌有效性

应用配置(可选)

如果需要使用本地化/国际化功能,还需将 SimpleJWT 添加到 INSTALLED_APPS 中:

INSTALLED_APPS = [
    # 其他应用...
    'rest_framework_simplejwt',
]

使用示例

获取令牌

使用用户名和密码获取令牌对:

curl -X POST \
     -H "Content-Type: application/json" \
     -d '{"username": "your_username", "password": "your_password"}' \
     http://localhost:8000/api/token/

成功响应将返回包含访问令牌和刷新令牌的 JSON 数据:

{
    "access": "eyJhbGciOi...很长的JWT字符串...",
    "refresh": "eyJhbGciOi...很长的JWT字符串..."
}

使用访问令牌

获取到访问令牌后,可以将其用于认证受保护的 API 端点:

curl -H "Authorization: Bearer eyJhbGciOi...访问令牌..." \
     http://localhost:8000/api/protected-resource/

刷新访问令牌

当访问令牌过期后,可以使用刷新令牌获取新的访问令牌:

curl -X POST \
     -H "Content-Type: application/json" \
     -d '{"refresh":"eyJhbGciOi...刷新令牌..."}' \
     http://localhost:8000/api/token/refresh/

响应将包含新的访问令牌:

{
    "access": "eyJhbGciOi...新的JWT字符串..."
}

最佳实践建议

  1. 令牌有效期:在生产环境中,应根据安全需求合理设置访问令牌和刷新令牌的有效期。访问令牌通常设置为较短时间(如15分钟),刷新令牌可以设置较长时间(如7天)。

  2. HTTPS:所有令牌传输必须通过 HTTPS 进行,以防止中间人攻击。

  3. 令牌存储:前端应用应将访问令牌存储在内存中,刷新令牌可存储在 HttpOnly 的 Cookie 中以提高安全性。

  4. 令牌撤销:考虑实现令牌黑名单机制,以便在用户登出或检测到可疑活动时能够立即撤销令牌。

通过以上配置和使用方法,您已经可以在 Django REST Framework 项目中轻松实现基于 JWT 的安全认证系统。SimpleJWT 的设计简洁而强大,能够满足大多数 API 项目的认证需求。

djangorestframework-simplejwt djangorestframework-simplejwt 项目地址: https://gitcode.com/gh_mirrors/dja/djangorestframework-simplejwt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强苹旖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值