最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

DjangoRestFramework 使用 simpleJWT 登陸認證完整記錄

 更新時間:2021年06月22日 09:45:11   作者:PFFFei  
Djangorestframework-simplejwt是Django REST Framework框架的一個jwt插件,使用 python http 工具進行接口測試的方法文中給大家提到,重點給大家分享djangorestframework-simplejwt 使用記錄及登陸認證的完成過程,感興趣的朋友跟隨小編一起看看吧

本文為 djangorestframework-simplejwt 使用記錄。(官方文檔)

 1. 安裝 

pip install djangorestframework-simplejwt

 2. 使用

 創(chuàng)建 Django 項目及 app:

# 創(chuàng)建名為 simple 的工程
django-admin startproject simple
 
# 創(chuàng)建名為 users 的應(yīng)用
cd simple
python manage.py startapp users

 目錄結(jié)構(gòu)如下:

 在 `simple/settings.py` 中進行配置:

# simple/settings.py
 
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',                        # add
    'rest_framework',               # add
    'rest_framework_simplejwt',     # add
]
 
REST_FRAMEWORK = {                  # add
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
}

 同步數(shù)據(jù)庫并創(chuàng)建超級用戶:

# 同步數(shù)據(jù)庫
python manage.py makemigrations
python manage.py migrate
 
# 創(chuàng)建超級用戶
python manage.py createsuperuser

在 `simple/urls.py` 中編寫路由: 

# simple/urls.py
from django.contrib import admin
from django.urls import path
from rest_framework_simplejwt.views import TokenRefreshView, TokenVerifyView, TokenObtainPairView
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('verify/', TokenVerifyView.as_view(), name='token_verify'),
]

 使用 python http 工具進行接口測試:

http -f POST http://127.0.0.1:8000/login/ username=admin password=123456

 3. 測試 API 接口

 在 `users/views.py` 中編寫如下代碼:

# users/views.py
from rest_framework import permissions
from rest_framework.response import Response
from rest_framework.views import APIView
 
 
class MyView(APIView):
    permission_classes = [permissions.IsAuthenticated]
 
    def get(self, request, *args, **kwargs):
        return Response("Get information successfully!")

 然后在 `simple/urls.py` 中添加路由:

# simple/urls.py
from users import views    # add
 
urlpatterns = [
    ...
    path('info/', views.MyView.as_view()),    # add
]

 使用 python http 工具進行測試:

4. 配置相關(guān)  

# settings.py
 
from datetime import timedelta
 
SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),  # 訪問令牌的有效時間
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),    # 刷新令牌的有效時間
 
    'ROTATE_REFRESH_TOKENS': False,     # 若為True,則刷新后新的refresh_token有更新的有效時間
    'BLACKLIST_AFTER_ROTATION': True,   # 若為True,刷新后的token將添加到黑名單中, 
                                        # When True,'rest_framework_simplejwt.token_blacklist',should add to INSTALLED_APPS
 
    'ALGORITHM': 'HS256',       # 對稱算法:HS256 HS384 HS512  非對稱算法:RSA
    'SIGNING_KEY': SECRET_KEY,
    'VERIFYING_KEY': None,      # if signing_key, verifying_key will be ignore.
    'AUDIENCE': None,
    'ISSUER': None,
 
    'AUTH_HEADER_TYPES': ('Bearer',),           # Authorization: Bearer <token>
    'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',   # if HTTP_X_ACCESS_TOKEN, X_ACCESS_TOKEN: Bearer <token>
    'USER_ID_FIELD': 'id',                      # 使用唯一不變的數(shù)據(jù)庫字段,將包含在生成的令牌中以標(biāo)識用戶
    'USER_ID_CLAIM': 'user_id',
 
    # 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),   # default: access
    # 'TOKEN_TYPE_CLAIM': 'token_type',         # 用于存儲令牌唯一標(biāo)識符的聲明名稱 value:'access','sliding','refresh'
    #
    # 'JTI_CLAIM': 'jti',
    #
    # 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',     # 滑動令牌是既包含到期聲明又包含刷新到期聲明的令牌
    # 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),       # 只要滑動令牌的到期聲明中的時間戳未通過,就可以用來證明身份驗證
    # 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),  # path('token|refresh', TokenObtainSlidingView.as_view())
}

 5. 自定義返回 token 信息

 在 `users/serializers.py` 中編寫如下代碼:

# simple/serializers.py
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
 
 
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
 
    def validate(self, attrs):
        data = super().validate(attrs)
        refresh = self.get_token(self.user)
        data['refresh'] = str(refresh)
        data['access'] = str(refresh.access_token)
        data['username'] = self.user.username
        return data

 在 'users/views.py` 及 `simple/urls.py` 中編寫如下代碼:

# users/views.py
from rest_framework_simplejwt.views import TokenObtainPairView
from users.serializers import MyTokenObtainPairSerializer
 
 
class MyTokenObtainPairView(TokenObtainPairView):
    serializer_class = MyTokenObtainPairSerializer
 
# simple/urls.py
from users.views import MyTokenObtainPairView
 
urlpatterns = [
    ...
    # modify
    path('login/', MyTokenObtainPairView.as_view(), name='token_obtain_pair'),
]

測試 API,可以看到返回的信息中多了 username 信息: 

http -f POST :8000/login/ username=admin password=123456

6. 手動頒發(fā) token 

手動頒發(fā) token 主要針對用戶注冊的情況,用戶注冊完之后直接返回 token。

以下代碼即針對一個 user 對象手動頒發(fā)一個 token 并返回。(用戶注冊同理,即 user 對象為注冊后獲取的用戶)

# users/views.py
 
class MyView(APIView):
    permission_classes = [permissions.IsAuthenticated]
 
    def get(self, request, *args, **kwargs):
        return Response("Get information successfully!")
 
    def post(self, request, *args, **kwargs):
        refresh = RefreshToken.for_user(request.user)
        content = {
            'refresh': str(refresh),
            'access': str(refresh.access_token),
        }
        return Response(content)

到此這篇關(guān)于DjangoRestFramework 使用 simpleJWT 登陸認證完整記錄的文章就介紹到這了,更多相關(guān)DjangoRestFramework登陸認證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python for循環(huán)輸入一個矩陣的實例

    python for循環(huán)輸入一個矩陣的實例

    今天小編就為大家分享一篇python for循環(huán)輸入一個矩陣的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python jupyter入門教程

    python jupyter入門教程

    Jupyter Notebook是一個開源的Web應(yīng)用程序,允許用戶創(chuàng)建和共享包含代碼、方程式、可視化和文本的文檔,今天通過本文給大家分享python jupyter入門教程,需要的朋友一起看看吧
    2021-08-08
  • 使用PyTorch常見4個錯誤解決示例詳解

    使用PyTorch常見4個錯誤解決示例詳解

    這篇文章主要為大家介紹了使用PyTorch常見4個錯誤解決示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • python PyTorch預(yù)訓(xùn)練示例

    python PyTorch預(yù)訓(xùn)練示例

    這篇文章主要介紹了python PyTorch預(yù)訓(xùn)練示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python從list類型、range()序列簡單認識類(class)【可迭代】

    Python從list類型、range()序列簡單認識類(class)【可迭代】

    這篇文章主要介紹了Python從list類型、range()序列簡單認識類(class),結(jié)合實例形式分析了list、range及自定義類等可迭代數(shù)據(jù)類型相關(guān)使用技巧,需要的朋友可以參考下
    2019-05-05
  • Python在字典中查找元素的3種方式

    Python在字典中查找元素的3種方式

    這篇文章主要介紹了Python在字典中查找元素的3種方式,字典是另一種可變?nèi)萜髂P?且可存儲任意類型對象,需要的朋友可以參考下
    2023-04-04
  • python爬蟲之urllib3的使用示例

    python爬蟲之urllib3的使用示例

    這篇文章主要介紹了 python爬蟲之urllib3的使用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • python (logging) 日志按日期、大小回滾的操作

    python (logging) 日志按日期、大小回滾的操作

    這篇文章主要介紹了python (logging) 日志按日期、大小回滾的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Django記錄操作日志與LogEntry的使用詳解

    Django記錄操作日志與LogEntry的使用詳解

    我們既知道如何記錄變更日志,也知道如何獲取變更日志,那么如何才能夠在admin后臺方便地查看操作日志呢?這篇文章主要給大家介紹了關(guān)于Django記錄操作日志與LogEntry使用的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Python地圖四色原理的遺傳算法著色實現(xiàn)

    Python地圖四色原理的遺傳算法著色實現(xiàn)

    大家好,本篇文章主要講的是Python地圖四色原理的遺傳算法著色實現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論

广西| 恩平市| 崇仁县| 康乐县| 和田市| 建阳市| 扎鲁特旗| 杭州市| 阜新市| 桃园市| 隆回县| 东乡县| 房山区| 博罗县| 黑山县| 临澧县| 泗阳县| 新兴县| 兴安县| 阿拉尔市| 易门县| 浪卡子县| 古交市| 师宗县| 土默特右旗| 平湖市| 南皮县| 兖州市| 房产| 扶余县| 泰兴市| 寿光市| 五原县| 若尔盖县| 华阴市| 邹城市| 建平县| 寻乌县| 哈尔滨市| 邳州市| 托克托县|