2016-07-01 10 views
2

Gibt es eine Möglichkeit, memcached für TokenAuthentication mit Django REST Framework zu verwenden.Django REST Framework - TokenAuthentication - Verwendung von Cache

Meine Tokens für Benutzer bleiben für lange Zeiträume (z. B. Monate) gleich, und daher ist es sinnvoll, die Datenbank nicht für jede Anforderung auf meinem Server zu treffen und das Benutzerobjekt mit dem zwischengespeicherten Token abzurufen.

Gibt es einen guten Weg, dies zu erreichen?

Dank

Antwort

2

Sie können eine custom authentication class erstellen, die anstelle von Ihnen DB Memcached Treffer:

class ExampleAuthentication(authentication.BaseAuthentication): 
    def authenticate(self, request): 
     token = request... # get your token here 
     if not token: 
      return None 

     try: 
      # user = User.objects.get(username=username) -> This is the original code from the link above 
      user = ... # get your user based in token here 
     except User.DoesNotExist: # some possible error 
      raise exceptions.AuthenticationFailed('No such user') 

     return (user, None) 

Dann können Sie Ihre eigene Authentifizierungs-Klasse-per-View verwenden, das heißt:

class ExampleApiView(APIView): 
    authentication_classes = (CustomTokenAuthentication,) 

    def get(self, request, *args, **kwargs): 

     ... 
Verwandte Themen