用户登录接口实现
在web开发中,HTTP协议是一种无状态的协议,这意味着每次请求都是独立的,没有关联性。为了实现用户登录功能,传统的web开发中常使用Session来存储用户登录信息,并在每次请求前验证用户是否登录。然而,对于现代的前后端分离项目,我们通常使用JWT(Json Web Token)来实现用户认证。

JWT是一种开放的标准,定义了一种紧凑且安全的方式,用于在各方之间传递JSON对象。JWT的Token是经过数字签名的,因此能够被验证和信任。与Session不同,JWT的Token保存在用户端,减轻了服务器的压力。
以下是使用djoser模块实现JWT认证的配置和接口使用方法的介绍:
配置
-
安装
djangorestframework_simplejwt模块:pip install djangorestframework_simplejwt -
在项目的Settings配置文件中,设置REST Framework的授权方式为JWT:
dx_movie/dx_movie/settings.py# DRF设置
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 12,
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
)
}
SIMPLE_JWT = {
'AUTH_HEADER_TYPES': ('JWT',),
} -
配置路由,在全局urls.py文件中,添加路由,代码如下:
from django.contrib import admin
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from movie import views
router = DefaultRouter()
router.register(r'movie', views.MovieViewSet)
router.register(r'category', views.CategoryViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(router.urls)),
path('api/', include('djoser.urls')),
path('api/', include('djoser.urls.jwt')),
]
JWT接口
以下是常用的JWT接口示例:
创建JWT
- 请求方式:POST
- URL:
/auth/jwt/create/ - 参数:
username:用户名password:密码
- 返回值:
refresh:用于刷新JWT Token的Refresh Tokenaccess:用于访问受保护资源的Access Token
请求结果如下所示。

这个账号需要是激活成功的账号。
刷新JWT
- 请求方式:POST
- URL:
/auth/jwt/refresh/ - 参数:
refresh:刷新Token所需的Refresh Token
- 返回值:
access:刷新后的Access Token
请求结果如下所示。

验证JWT
- 请求方式:POST
- URL:
/auth/jwt/verify/ - 参数:
token:待验证的Token
- 返回值:成功验证返回空,验证失败会报错
请求结果如下图所示。

通过使用JWT,我们可以在前后端分离的项目中实现用户认证功能。登录时生成JWT Token,并在需要验证用户身份的接口中携带该Token进行验证。
请注意,本文仅介绍了djoser模块中JWT认证的基本配置和常用接口,更多关于JWT的工作原理和详细使用方法,请参考官方文档或相关资料。
参考链接:
【大熊课堂精品课程】
Python零基础入门动画课: https://www.bilibili.com/cheese/play/ss7988
Django+Vue:全栈开发: https://www.bilibili.com/cheese/play/ss8134
PyQT6开发桌面软件: https://www.bilibili.com/cheese/play/ss12314
Python办公自动化: https://www.bilibili.com/cheese/play/ss14990
Cursor AI编程+MCP:零基础实战项目课: https://www.bilibili.com/cheese/play/ss105194189
Pandas数据分析实战: https://www.bilibili.com/cheese/play/ss734522035
AI大模型+Python小白应用实战: https://www.bilibili.com/cheese/play/ss3844