aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-10-17 14:59:37 +0100
committerTom Christie2012-10-17 14:59:37 +0100
commit4c17d1441f184eabea9000155f07445bcc2aa14c (patch)
tree4aa8219aefab33f02cd8e5dd97a0fbd6f8bfc76b
parentbd8360c826b7a922eeb6226beb17853cfadb466c (diff)
downloaddjango-rest-framework-4c17d1441f184eabea9000155f07445bcc2aa14c.tar.bz2
Add `Unauthenticated` exception.
-rw-r--r--docs/api-guide/exceptions.md13
-rw-r--r--rest_framework/exceptions.py8
2 files changed, 19 insertions, 2 deletions
diff --git a/docs/api-guide/exceptions.md b/docs/api-guide/exceptions.md
index c3bdb7b9..f5dff94a 100644
--- a/docs/api-guide/exceptions.md
+++ b/docs/api-guide/exceptions.md
@@ -49,11 +49,19 @@ Raised if the request contains malformed data when accessing `request.DATA` or `
By default this exception results in a response with the HTTP status code "400 Bad Request".
+## Unauthenticated
+
+**Signature:** `Unauthenticated(detail=None)`
+
+Raised when an unauthenticated incoming request fails the permission checks.
+
+By default this exception results in a response with the HTTP status code "401 Unauthenticated", but it may also result in a "403 Forbidden" response, depending on the authentication scheme in use. See the [authentication documentation][authentication] for more details.
+
## PermissionDenied
**Signature:** `PermissionDenied(detail=None)`
-Raised when an incoming request fails the permission checks.
+Raised when an authenticated incoming request fails the permission checks.
By default this exception results in a response with the HTTP status code "403 Forbidden".
@@ -81,4 +89,5 @@ Raised when an incoming request fails the throttling checks.
By default this exception results in a response with the HTTP status code "429 Too Many Requests".
-[cite]: http://www.doughellmann.com/articles/how-tos/python-exception-handling/index.html \ No newline at end of file
+[cite]: http://www.doughellmann.com/articles/how-tos/python-exception-handling/index.html
+[authentication]: authentication.md \ No newline at end of file
diff --git a/rest_framework/exceptions.py b/rest_framework/exceptions.py
index 572425b9..1597da61 100644
--- a/rest_framework/exceptions.py
+++ b/rest_framework/exceptions.py
@@ -23,6 +23,14 @@ class ParseError(APIException):
self.detail = detail or self.default_detail
+class Unauthenticated(APIException):
+ status_code = status.HTTP_401_UNAUTHENTICATED
+ default_detail = 'Incorrect or absent authentication credentials.'
+
+ def __init__(self, detail=None):
+ self.detail = detail or self.default_detail
+
+
class PermissionDenied(APIException):
status_code = status.HTTP_403_FORBIDDEN
default_detail = 'You do not have permission to perform this action.'