Ich verwende Django Token basierte Authentifizierung. (JWT-Token wird von Drittanbietern wie AWS Cognito generiert. Wir überprüfen lediglich die Signatur und Ablaufzeit).Djangos Token basierte Authentifizierung ohne User-Modell
Diese REST Anwendung werden keine Benutzermodelle haben, wer auch immer die API-Aufrufe raubend müssen von JWT Token nur authentifiziert werden.
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)
In Aufrufe:
@api_view(["POST"])
@authentication_classes((JSONWebTokenAuthentication,))
@permission_classes((AllowAny,))
Above Prozess, nicht im Auge behalten von Token alle an. Mit/Ohne Token funktionieren APi-Anrufe. Wenn ich unter zwei Änderungen mache, funktioniert es.
user = User.objects.get(username='root')
#user = AnonymousUser()
@permission_classes((IsAuthenticated,))
Eine Möglichkeit, es zu tun ist, atleast einen Benutzer in meiner app und Referenz zu haben, dass Benutzer [Diese Webapp auf einem beliebige Anzahl von Instanzen skalieren können, wenn erforderlich, so den gleichen Benutzer mit dem gleichen „username“ Einfügen hat automatisiert werden. ]. Aber kann ich stattdessen das "Benutzer" -Konzept in der Authentifizierung eliminieren?
Danke. Es funktionierte als Workaround für mich. Wenn ich Drittanbieter-Tools wie AWS-Cognito verwende, glaube ich, dass uns das Django-Benutzermodell überhaupt nicht interessieren sollte. –