0

Ich verwende:Wie macht Django rest_framework Session-Authentifizierung case insensitive? Django Rest Framework Standardauthentifizierung mit dem folgenden Code

class MyBasicAuthentication(BasicAuthentication): 

    def authenticate_header(self, request): 
     return 'xBasic realm="%s"' % self.www_authenticate_realm 


class AuthView(APIView): 
    authentication_classes = (MyBasicAuthentication,) 
    serializer_class = UserSerializer 

    def post(self, request, *args, **kwargs): 
     user = authenticate(username=request.user.username, password=request.user.password) 
     login(request, user) 

     response = get_user_basic_info(request.user) 

     return Response(response) 

Es funktioniert gut, aber ich muss diese Authentifizierung Fall machen unempfindlich für den Benutzernamen ein. Irgendwelche Vorschläge?

Antwort

0

Sie müssen nur alle Groß- oder Kleinbuchstaben für den in der Datenbank gespeicherten Benutzernamen auswählen. IE für Großbuchstaben:

Auf diese Weise kann die Eingabe gemischt werden, aber die Ausgabe in standardisiert.

+0

eine bessere Möglichkeit, zu tun, was Sie vorschlagen mit zu authentifizieren sein (Benutzername_iexact = request.user.username), password = request.user. Passwort) aber das Problem hier ist, dass django rest_framework Authentifizierung (BasicAuthentication.www_authenticate_realm) vor dieser Zeile stattfindet, die den Benutzer mit Djangos regulärem Auth authentifiziert – Cruclax

0

Der einfachste Weg dies zu tun ist standardisieren die Art und Weise wie Sie die Benutzernamen speichern (in Groß- oder Kleinbuchstaben, wie @ Upsampled beantwortet), was bedeuten würde, dass die Authentifizierung, die zuerst auftritt, kein Problem haben würde. Wenn Sie alle vorhandenen Benutzer in einen bestimmten Fall ändern möchten, würde ich diese Antwort https://stackoverflow.com/a/33456271

Verwandte Themen