Refactor SessionAuthentication slightly

This commit is contained in:
Tom Christie 2013-06-29 08:14:05 +01:00
parent f7db06953b
commit 35022ca921

View File

@ -26,6 +26,12 @@ def get_authorization_header(request):
return auth return auth
class CSRFCheck(CsrfViewMiddleware):
def _reject(self, request, reason):
# Return the failure reason instead of an HttpResponse
return reason
class BaseAuthentication(object): class BaseAuthentication(object):
""" """
All authentication classes should extend BaseAuthentication. All authentication classes should extend BaseAuthentication.
@ -110,20 +116,20 @@ class SessionAuthentication(BaseAuthentication):
if not user or not user.is_active: if not user or not user.is_active:
return None return None
# Enforce CSRF validation for session based authentication. self.enforce_csrf(http_request)
class CSRFCheck(CsrfViewMiddleware):
def _reject(self, request, reason):
# Return the failure reason instead of an HttpResponse
return reason
reason = CSRFCheck().process_view(http_request, None, (), {})
if reason:
# CSRF failed, bail with explicit error message
raise exceptions.AuthenticationFailed('CSRF Failed: %s' % reason)
# CSRF passed with authenticated user # CSRF passed with authenticated user
return (user, None) return (user, None)
def enforce_csrf(self, request):
"""
Enforce CSRF validation for session based authentication.
"""
reason = CSRFCheck().process_view(request, None, (), {})
if reason:
# CSRF failed, bail with explicit error message
raise exceptions.AuthenticationFailed('CSRF Failed: %s' % reason)
class TokenAuthentication(BaseAuthentication): class TokenAuthentication(BaseAuthentication):
""" """