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中配置的自定义数据都已经返回
?
|