我已經用 Django Ninja 框架實作了 CRUD,但現在我想在我的應用程式中進行身份驗證,我已經安裝并配置了 Djoser,所以現在我可以生成令牌,但我不知道如何在我的 CRUD 中進行驗證
class AuthBearer(HttpBearer):
def authenticate(self, request, token):
if token == "supersecret":
return token
@api.get("/bearer", auth=AuthBearer())
def bearer(request):
return {"token": request.auth}
我應該能夠在“AuthBearer”函式中檢查令牌,但我不知道如何
我的回購(鏈接)
uj5u.com熱心網友回復:
所以基本上你必須擴展 Ninja 的 HttpBearer 類并實作 authenticate 方法,它將接受請求和令牌作為引數。如果用戶未通過身份驗證,此方法回傳 None ,如果用戶通過身份驗證,則將在 request.auth 中填充一個字串。通常此字串將是用戶名,因此您可以在所有端點中使用它。像這樣的東西(我使用 PyJWT 進行令牌解碼):
import jwt
from ninja.security import HttpBearer
class AuthBearer(HttpBearer):
def authenticate(self, request, token):
try:
#JWT secret key is set up in settings.py
JWT_SIGNING_KEY = getattr(settings, "JWT_SIGNING_KEY", None)
payload = jwt.decode(token, JWT_SIGNING_KEY, algorithms=["HS256"])
username: str = payload.get("sub")
if username is None:
return None
except jwt.PyJWTError as e:
return None
return username
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411672.html
標籤:
