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 的生成和校验,提供安全的身份验证和授权机制。
希望本文对您有所帮助!
参考链接:
djangorestframework-simplejwt
官方文档:https://django-rest-framework-simplejwt.readthedocs.io/