Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[1.2.X] Fixed #13190 -- Improved error handling for the case where no…

… authentication backends are defined. Thanks to Joel3000 for the report, and Łukasz Rekucki for the final patch.

Backport of r14793 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14799 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 81a85a0c2b6741b82819687db6a5bc092d7c4508 1 parent c7d6841
@freakboy3742 freakboy3742 authored
View
2  django/contrib/auth/__init__.py
@@ -39,6 +39,8 @@ def get_backends():
backends = []
for backend_path in settings.AUTHENTICATION_BACKENDS:
backends.append(load_backend(backend_path))
+ if not backends:
+ raise ImproperlyConfigured('No authentication backends have been defined. Does AUTHENTICATION_BACKENDS contain anything?')
return backends
def authenticate(**credentials):
View
2  django/contrib/auth/tests/__init__.py
@@ -1,4 +1,4 @@
-from django.contrib.auth.tests.auth_backends import BackendTest, RowlevelBackendTest, AnonymousUserBackendTest, NoAnonymousUserBackendTest
+from django.contrib.auth.tests.auth_backends import BackendTest, RowlevelBackendTest, AnonymousUserBackendTest, NoAnonymousUserBackendTest, NoBackendsTest
from django.contrib.auth.tests.basic import BasicTestCase
from django.contrib.auth.tests.decorators import LoginRequiredTestCase
from django.contrib.auth.tests.forms import UserCreationFormTest, AuthenticationFormTest, SetPasswordFormTest, PasswordChangeFormTest, UserChangeFormTest, PasswordResetFormTest
View
16 django/contrib/auth/tests/auth_backends.py
@@ -1,6 +1,7 @@
from django.conf import settings
from django.contrib.auth.models import User, Group, Permission, AnonymousUser
from django.contrib.contenttypes.models import ContentType
+from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase
@@ -245,3 +246,18 @@ def test_has_module_perms(self):
def test_get_all_permissions(self):
self.assertEqual(self.user1.get_all_permissions(TestObj()), set())
+
+class NoBackendsTest(TestCase):
+ """
+ Tests that an appropriate error is raised if no auth backends are provided.
+ """
+ def setUp(self):
+ self.old_AUTHENTICATION_BACKENDS = settings.AUTHENTICATION_BACKENDS
+ settings.AUTHENTICATION_BACKENDS = []
+ self.user = User.objects.create_user('test', 'test@example.com', 'test')
+
+ def tearDown(self):
+ settings.AUTHENTICATION_BACKENDS = self.old_AUTHENTICATION_BACKENDS
+
+ def test_raises_exception(self):
+ self.assertRaises(ImproperlyConfigured, self.user.has_perm, ('perm', TestObj(),))
Please sign in to comment.
Something went wrong with that request. Please try again.