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

猜你喜欢

转载自www.cnblogs.com/qingy/p/12943099.html
今日推荐