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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM