Django中token校验 rest_framework_simplejwt使用方法

在Django开发中,身份验证和授权是非常重要的部分。而使用 JSON Web Token(JWT)进行身份验证是一种常见的做法。在Django中,可以使用第三方库 djangorestframework-simplejwt 来方便地实现 JWT 的生成和校验。本文将介绍如何使用 rest_framework_simplejwt 进行 Django 中的 token 校验。

安装

首先,需要通过 pip 安装 djangorestframework-simplejwt

pip install djangorestframework-simplejwt

安装完成后,需要在 Django 项目的 settings.py 文件中进行配置:

# settings.py

INSTALLED_APPS = [
    'rest_framework',
    'rest_framework_simplejwt',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
    # 自定义异常处理
    'EXCEPTION_HANDLER': 'test_platform.exceptions.custom_exception_handler',
}

# 用于生成token
SIMPLE_JWT = {
    # 设置token的有效时间
    'AUTH_HEADER_TYPES': ('Bearer',),
    "ACCESS_TOKEN_LIFETIME": timedelta(hours=2),  # 访问令牌的有效时间
    "REFRESH_TOKEN_LIFETIME": timedelta(days=1),    # 刷新令牌的有效时间
}

# 指定生成token的模型
AUTH_USER_MODEL = 'test_platform.UserInfo'

配置完成后,Django 将使用 rest_framework_simplejwt 提供的 JWT 认证类进行身份验证。

生成和校验 Token

生成 Token

要生成 Token,需要使用 rest_framework_simplejwt.tokens 中的 AccessToken 或 RefreshToken 类。例如,在用户登录成功后,可以生成一个包含用户信息的访问令牌:

from rest_framework_simplejwt.tokens import AccessToken

def login(request):
    # 生成访问令牌
    access_token = AccessToken.for_user(user)
    return response

生成的访问令牌可以将其作为 JSON 数据返回给客户端,客户端可以将其存储在本地,并在后续的请求中将其放入请求头或请求体中。

校验 Token

要校验 Token,可以使用

from rest_framework.permissions import IsAuthenticated
from rest_framework_simplejwt.authentication import JWTAuthentication

def my_view(request):
    # 校验 Token
    authentication_classes = [JWTAuthentication]
    permission_classes = [IsAuthenticated]

校验通过后,user 对象将包含相关的用户信息,token 对象将包含 Token 的相关数据,如过期时间等。

高级用法

rest_framework_simplejwt 还提供了一些高级用法,如刷新 Token、黑名单、配置 Token 过期时间等。您可以通过查阅官方文档来了解更多关于 rest_framework_simplejwt 的用法和配置选项。

官方文档:https://django-rest-framework-simplejwt.readthedocs.io/

以上就是使用 rest_framework_simplejwt 进行 Django 中的 token 校验的方法。通过简单的配置和使用,您可以轻松地在 Django 项目中实现 JWT 的生成和校验,提供安全的身份验证和授权机制。

希望本文对您有所帮助!


参考链接: