aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/authentication.py
diff options
context:
space:
mode:
authorAlec Perkins2012-09-09 13:23:07 -0400
committerAlec Perkins2012-09-09 13:23:07 -0400
commit45001033378a49986d4cd7f5bdf4673b083cdbd0 (patch)
treee5eb2cd49d122ba56d63058413cb3d4d138dae7a /djangorestframework/authentication.py
parent0ae5500f34a81005ba0161dacb280a94f768a885 (diff)
parentd4f8b4cf0683923fe85652f8fd572d2931eb3074 (diff)
downloaddjango-rest-framework-45001033378a49986d4cd7f5bdf4673b083cdbd0.tar.bz2
Merge 'tomchristie/restframework2' into 'browsable-bootstrap'
Diffstat (limited to 'djangorestframework/authentication.py')
-rw-r--r--djangorestframework/authentication.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/djangorestframework/authentication.py b/djangorestframework/authentication.py
index 4d5a7e86..2446fbbd 100644
--- a/djangorestframework/authentication.py
+++ b/djangorestframework/authentication.py
@@ -103,4 +103,38 @@ class SessionAuthentication(BaseAuthentication):
return (user, None)
-# TODO: TokenAuthentication, DigestAuthentication, OAuthAuthentication
+class TokenAuthentication(BaseAuthentication):
+ """
+ Use a token model for authentication.
+
+ A custom token model may be used here, but must have the following minimum
+ properties:
+
+ * key -- The string identifying the token
+ * user -- The user to which the token belongs
+ * revoked -- The status of the token
+
+ The token key should be passed in as a string to the "Authorization" HTTP
+ header. For example:
+
+ Authorization: 0123456789abcdef0123456789abcdef
+
+ """
+ model = None
+
+ def authenticate(self, request):
+ key = request.META.get('HTTP_AUTHORIZATION', '').strip()
+
+ if self.model is None:
+ from djangorestframework.tokenauth.models import BasicToken
+ self.model = BasicToken
+
+ try:
+ token = self.model.objects.get(key=key)
+ except self.model.DoesNotExist:
+ return None
+
+ if token.user.is_active and not token.revoked:
+ return (token.user, token)
+
+# TODO: DigestAuthentication, OAuthAuthentication