You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework中Simple JWT认证的Token验证与过期刷新实现

Django REST Framework Simple JWT Token验证及过期刷新实现

要实现请求时自动校验access token有效性、过期引导刷新的能力,可直接复用Simple JWT提供的原生能力,配合自定义扩展即可,具体配置步骤如下:

核心配置代码

1. serializers.py 自定义Token返回序列化器

如果需要在获取Token的接口返回用户自定义字段(如用户ID、邮箱等),可继承默认的TokenObtainPairSerializer扩展,不需要自定义返回字段可跳过这一步:

class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
        # 默认返回结果(access/refresh tokens)
        data = super(CustomTokenObtainPairSerializer, self).validate(attrs)
        # 自定义添加返回数据
        data.update({'email': self.user.email})
        data.update({'id': self.user.id})
        data.update({'status':"success"})
        # 可继续添加其他需要返回的响应内容
        return data

2. views.py 自定义Token获取视图

替换默认的Token获取视图的序列化器为上面自定义的序列化器:

class CustomTokenObtainPairView(TokenObtainPairView):
    # 替换为自定义序列化器
    serializer_class = CustomTokenObtainPairSerializer

3. urls.py 配置Token相关接口

Simple JWT原生提供了Token刷新、Token校验接口,直接注册到路由即可:

from rest_framework_simplejwt.views import TokenRefreshView, TokenVerifyView

urlpatterns = [
    path('token/', views.CustomTokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('token/verify/', TokenVerifyView.as_view(), name='token_verify'),
]

urlpatterns = format_suffix_patterns(urlpatterns)

校验逻辑说明

  • 需要校验登录态的接口直接配置rest_framework_simplejwt.authentication.JWTAuthentication作为认证类即可,框架会自动校验请求头中携带的access token有效性
  • 若access token已过期,接口会返回401状态码,错误码为token_not_valid,前端收到该响应后可携带本地存储的refresh token调用/token/refresh/接口获取新的access token,无需用户重新登录
  • 若refresh token也已过期,刷新接口同样会返回401状态码,此时再引导用户重新登录即可

内容的提问来源于stack exchange,提问作者Zero0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:06:02