aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/authentication.py
diff options
context:
space:
mode:
authorDanilo Bargen2014-06-02 00:41:58 +0200
committerDanilo Bargen2014-09-23 14:16:08 +0200
commitb187f53453d3885cd918f5f9f4490bcc8e3e2410 (patch)
treee7c44584ebbd6e39736a8e782df5730cb6052422 /rest_framework/authentication.py
parent5d80f7f932bfcc0630ac0fdbf07072a53197b98f (diff)
downloaddjango-rest-framework-b187f53453d3885cd918f5f9f4490bcc8e3e2410.tar.bz2
Changed return status for CSRF failures to HTTP 403
By default, Django returns "HTTP 403 Forbidden" responses when CSRF validation failed[1]. CSRF is a case of authorization, not of authentication. Therefore `PermissionDenied` should be raised instead of `AuthenticationFailed`. [1] https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#rejected-requests
Diffstat (limited to 'rest_framework/authentication.py')
-rw-r--r--rest_framework/authentication.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/rest_framework/authentication.py b/rest_framework/authentication.py
index f3fec05e..36d74dd9 100644
--- a/rest_framework/authentication.py
+++ b/rest_framework/authentication.py
@@ -129,7 +129,7 @@ class SessionAuthentication(BaseAuthentication):
reason = CSRFCheck().process_view(request, None, (), {})
if reason:
# CSRF failed, bail with explicit error message
- raise exceptions.AuthenticationFailed('CSRF Failed: %s' % reason)
+ raise exceptions.PermissionDenied('CSRF Failed: %s' % reason)
class TokenAuthentication(BaseAuthentication):