Django:rest_framework_jwt登录接口
登录接口实现
1. 建立用户模型 :UserProfile
1 from django.db import models 2 from django.contrib.auth.models import AbstractUser 3 4 # 继承AbstractUser, 然后增加需要的字段名 5 class UserProfile(AbstractUser): 6 class Meta:
# 自定义表名称 7 db_table = 'user' 8 verbose_name_plural = verbose_name = '用户' 9 10 sex = ( 11 ('male', '男'), 12 ('female', '女') 13 ) 14 nick_name = models.CharField(max_length=30, null=True, verbose_name='昵称', help_text='昵称') 15 mobile = models.CharField(max_length=11, verbose_name='电话', help_text='电话') 16 last_login = models.DateTimeField(null=True)
PS: 如果感觉自带的字段有多余的,可以进入源码文件,注释不需要的字段。
2. 数据库迁移:python manage.py migrate
3. 安装rest_framework_jwt:pip install rest_framework_jwt
4. 配置到我们的项目里面:settings.py
5. 路由配置:urls.py
1 from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token 2 from django.urls import path, include 3 from django.contrib import admin 4 5 urlpatterns = [ 6 path('admin/', admin.site.urls), 7 path('api-auth/', include('rest_framework.urls')), 8 path('api/login/', obtain_jwt_token, name='token_obtain_pair'), # jwt 登录接口 9 path('api/token/refresh/', refresh_jwt_token, name='token_refresh'), # jwt 刷新token接口 10 ]
6. 访问登录接口地址:http://localhost:8000/api/login
7. 使用 user 表中的用户信息post请求接口,查看返回信息。
JWT 返回信息格式自定义
1. 新建一个存放公共模块的文件:utils.py
2. 在文件中定义一个方法:jwt_response_payload_handler
1 def jwt_response_payload_handler(token, user=None, request=None): 2 """ 3 自定义jwt认证成功返回数据 4 :token 返回的jwt 5 :user 当前登录的用户信息[对象] 6 :request 当前本次客户端提交过来的数据 7 """ 8 return { 9 'code': 0, 10 'msg': '成功', 11 'data': { 12 'id': user.id, 13 'username': user.username, 14 'token': token, 15 } 16 }
3. 修改配置:settings.py
# 错误返回信息自定义可以查看:https://blog.csdn.net/pengyuyan2_1/article/details/103297753