在Django REST framework的SimpleJWT庫中,AccessToken是一個類,用于表示一個JSON Web Token (JWT)中的訪問令牌部分,訪問令牌是一種常見的身份驗證令牌,通常用于保護API端點,
通過SimpleJWT庫,您可以使用AccessToken類創建、決議和驗證JWT,以實作安全的身份驗證和授權機制,訪問令牌可以包含有關用戶或會話的資訊,以及與該令牌相關的權限和有效期資訊,
具體來說,AccessToken類具有以下作用:
-
創建:可以使用
AccessToken.for_user或AccessToken.for_token方法創建一個新的訪問令牌,for_user方法創建一個針對指定用戶的新訪問令牌,而for_token方法將現有的訪問令牌字串轉換為AccessToken實體, -
決議:可以使用
AccessToken.decode方法將JWT字串解碼為AccessToken實體,解碼后,您可以使用訪問令牌中包含的資訊驗證用戶身份和權限, -
驗證:
AccessToken類提供了幾種驗證方法,例如verify和verify_exp方法,用于確保訪問令牌在有效期內且未被篡改,這些方法可以幫助您構建可靠的身份驗證和授權機制,以保護API端點,
總之,AccessToken類是實作安全身份驗證和授權機制的重要組件,使得您可以創建、決議和驗證JWT,以及管理訪問令牌相關的權限和有效期資訊,
在Django REST framework的SimpleJWT庫中,AccessToken.for_user是一個方法,用于創建一個針對指定用戶的新訪問令牌(JSON Web Token,JWT),
AccessToken.for_user方法接受一個Django用戶模型(User)實體作為輸入,并回傳一個新的AccessToken實體,使用該方法可以為特定用戶創建一個新的JWT,其中包含該用戶的身份驗證資訊和其他相關資訊,例如訪問權限、過期時間等,
以下是如何使用AccessToken.for_user方法的示例代碼:
from django.contrib.auth.models import User from rest_framework_simplejwt.tokens import AccessToken # 獲取要為其生成JWT的用戶實體 user = User.objects.get(username='johndoe') # 為用戶創建一個新的JWT access_token = AccessToken.for_user(user) jwt = str(access_token)
在此示例中,AccessToken.for_user方法接受User實體并創建一個新的AccessToken實體,該實體包含有關用戶身份驗證和其他資訊的有效載荷,使用str函式將訪問令牌轉換為JWT字串,
在Django REST framework的SimpleJWT庫中,get_token是TokenObtainPairSerializer類提供的一個輔助函式,用于在驗證用戶憑證后生成JSON Web Token(JWT),
get_token函式接受一個包含用戶憑證(如用戶名和密碼)的字典作為輸入,并使用TokenObtainPairSerializer來驗證憑證并生成JWT,JWT以字串形式回傳,客戶端可以使用它來驗證未來對受保護API端點的請求,
以下是如何使用get_token函式的示例代碼:
from django.contrib.auth.models import User from rest_framework_simplejwt.tokens import get_token # 獲取要為其生成JWT的用戶實體 user = User.objects.get(username='johndoe') # 為用戶創建一個新的JWT jwt = get_token(user)
在此示例中,get_token函式接受User實體并回傳一個新的JWT字串,該字串包含有關用戶身份驗證和其他資訊的有效載荷,由于函式回傳JWT字串,因此不需要像使用AccessToken.for_user方法一樣將訪問令牌實體轉換為字串,
總之,get_token函式是一個方便的函式,可用于創建新的JWT字串,而不需要顯式地創建訪問令牌實體,如果您只需要JWT字串而不需要操作AccessToken實體,則可以使用此函式來實作更簡潔的代碼,
或者
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer from rest_framework_simplejwt.tokens import AccessToken # 創建一個包含用戶憑證的字典 user_data = https://www.cnblogs.com/beichengshiqiao/archive/2023/05/15/{'username': 'johndoe', 'password': 'mypassword'} # 創建一個序列化器實體并驗證用戶憑證 serializer = TokenObtainPairSerializer(data=https://www.cnblogs.com/beichengshiqiao/archive/2023/05/15/user_data) serializer.is_valid(raise_exception=True) # 使用驗證后的憑證生成JWT access_token = AccessToken.for_user(serializer.validated_data['user']) jwt = str(access_token)
在此示例中,get_token函式并沒有直接呼叫,而是通過呼叫AccessToken.for_user方法間接呼叫的,該方法基于驗證后的用戶資料回傳一個新的訪問令牌,然后使用str函式將訪問令牌轉換為JWT字串,
AccessToken.for_user和get_token都是用于創建一個針對指定用戶的新訪問令牌(JSON Web Token,JWT)的函式,它們的不同之處在于回傳值的型別和用法,
AccessToken.for_user回傳一個AccessToken實體,需要將其轉換為JWT字串才能使用,而get_token函式直接回傳一個JWT字串,因此可以直接使用,
以下是使用這兩個函式的示例代碼:
from django.contrib.auth.models import User from rest_framework_simplejwt.tokens import AccessToken, get_token # 獲取要為其生成JWT的用戶實體 user = User.objects.get(username='johndoe') # 使用AccessToken.for_user創建AccessToken實體 access_token = AccessToken.for_user(user) jwt_1 = str(access_token) # 使用get_token創建JWT字串 jwt_2 = get_token(user) # 輸出結果 print(jwt_1) print(jwt_2)
在此示例中,使用AccessToken.for_user創建access_token實體,然后使用str函式將其轉換為JWT字串,使用get_token函式直接創建JWT字串,最后,將兩個字串列印到控制臺輸出,
總之,如果您需要訪問令牌的其他屬性(例如過期時間,scopes等),則應使用AccessToken.for_user方法來創建AccessToken實體,但是,如果您只需要JWT字串,則可以使用更簡潔的get_token函式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552495.html
標籤:其他
上一篇:Java并發教程_編程入門自學教程_菜鳥教程-免費教程分享
下一篇:返回列表
