我使用基於Django的令牌認證。 (JWT令牌由第三方生成,例如AWS Cognito,我們將只驗證簽名和到期時間)。基於Django的令牌認證,而無需用戶模型
這REST應用程序將不會有任何用戶的機型,誰消耗的API調用需要由JWT令牌只有經過身份驗證。
class JSONWebTokenAuthentication(TokenAuthentication):
def authenticate_credentials(self, jwtToken):
try:
payload = jwt.decode(jwtToken, secret_key,verify=True)
# user = User.objects.get(username='root')
user = AnonymousUser()
except (jwt.DecodeError, User.DoesNotExist):
raise exceptions.AuthenticationFailed('Invalid token)
except jwt.ExpiredSignatureError:
raise exceptions.AuthenticationFailed('Token has expired')
return (user, payload)
在瀏覽:
@api_view(["POST"])
@authentication_classes((JSONWebTokenAuthentication,))
@permission_classes((AllowAny,))
上述過程,不留令牌的軌跡可言。帶/不帶令牌,APi呼叫正在工作。如果我在兩個以下的變化,它正在工作。
user = User.objects.get(username='root')
#user = AnonymousUser()
@permission_classes((IsAuthenticated,))
一種方式來做到這一點是,有ATLEAST一個用戶在我的應用程序,並說明用戶[需要的時候,所以將用相同的「用戶名」相同的用戶此Web應用程序可能會擴展到任意數量的實例有自動化。 ]。但是,我可以消除身份驗證中的「用戶」概念嗎?
謝謝。它對我來說是一個解決方法。當我使用AWS認知等第三方工具時,我相信我們根本不應該關心Django用戶模型。 –