我已经设置了一个带有管理页面的django项目。它在开发的前几周完美运行,暂时没有使用管理页面,当我回到它时,管理页面被破坏了。无论我做什么,它都不允许我登录。
输入用户名和PW后,管理页面总是说:
Please enter a correct username and password. Note that both fields are case-sensitive.
我检查了数据库:超级用户存在并且is_active,is_superuser和is_staff都是True。我已经使用shell来确保密码正确。我已多次刷新,删除并重新创建数据库,以确保没有错误。我还对中间件,网址,INSTALLED_APPS等进行了双重检查,以确保它们都已正确设置。
据我所知,管理页面完美无缺,但他们从不让任何人登录。
任何想法在这里发生了什么,或其他尝试调试的方法?我对这个错误感到困惑。
PS:如果重要的话,我使用South进行数据库迁移,使用django-social-auth进行FB登录,并将local_settings.py用于生产和开发(我已经检查了它们 - 冲突是没有'那里。)答案 0 :(得分:17)
此问题可能与身份验证后端有关。 请检查您的设置文件以获取AUTHENTICATION_BACKENDS参数。
尝试以下值:
AUTHENTICATION_BACKENDS = (
('django.contrib.auth.backends.ModelBackend'),
)
有关的更多信息 Official Django Documentation
答案 1 :(得分:1)
试试这个;在tests.py中:
from django.contrib import auth
class AuthTestCase(TestCase):
def setUp(self):
self.u = User.objects.create_user('test@dom.com', 'test@dom.com', 'pass')
self.u.is_staff = True
self.u.is_superuser = True
self.u.is_active = True
self.u.save()
def testLogin(self):
self.client.login(username='test@dom.com', password='pass')
然后使用python manage.py test <your_app_name>.AuthTestCase
运行测试。如果通过,系统正在运行,可能会查看用户名和密码以确保它们可以接受。
答案 2 :(得分:0)
您可以执行以下操作:
然后你可以再次登录!
答案 3 :(得分:0)
我遇到了同样的问题,但设置文件上的AUTHENTICATION_BACKENDS标志对我来说不是问题。以某种方式使用Django Rest Framework我修改了密码而没有调用set_password,因此绕过散列密码。这就是它显示无效登录的原因。
我能够通过运行简单的测试来检测问题,以便通过类似的测试来测试用户创建:
from django.test import TestCase
from django.contrib import auth
from .models import *
class AuthTestCase(TestCase):
def setUp(self):
self.u = UserProfile.objects.create_user('test@dom.com', 'iamtest', 'pass')
self.u.is_staff = True
self.u.is_superuser = True
self.u.is_active = True
self.u.save()
def testLogin(self):
self.client.login(username='test@dom.com', password='pass')
还值得一提的是,我正在创建一个名为UserProfile的自定义用户
答案 4 :(得分:0)
您是否正在使用自定义用户模型并忘记将其添加到settings.py
中?那就是我刚刚发生的事情。
# Substituting a custom User model
AUTH_USER_MODEL = "app_custom_auth.User"