1.项目中安装djangorestframework-jwt
pip install djangorestframework-jwt
2.在yd_api/settings/dev.py中添加登录认证配置
REST_FRAMEWORK = { # 登录认证类 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), }import datetime JWT_AUTH = { # 设置jwt在客户端的有效期 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), # 设置返回数据的格式 'JWT_RESPONSE_PAYLOAD_HANDLER': 'yd_api.apps.users.utils.jwt_response_payload_handler', }
3.总路由配置yd_api/urls.py
from django.urls import path,re_path,include path('users/', include("users.urls")) ]
4.yd_api/apps/users/urls.py中配置
from rest_framework_jwt.views import obtain_jwt_token from django.urls import path urlpatterns = [ path("login/", obtain_jwt_token), # jwt接口 ]
5.启动项目,在postman中测试(测试前需要创建一个用户python manage.py createsuperuser)
6.配置jwt返回自定义数据yd_api/apps/users/utils.py
def jwt_response_payload_handler(token,user=None,request=None): """ 自定义jwt认证成功返回数据 :param token 本次登录成功以后,返回的jwt :param user 本次登录成功以后,从数据库中查询到的用户模型信息 :param request 本次客户端的请求对象 """ return { 'token': token, 'id': user.id, 'username': user.username }
7.启动前端项目访问登录接口,如下可以看到在jwt中配置的自定义数据都已经返回