【发布时间】:2023-03-14 17:24:01
【问题描述】:
我从一个旧的 php 应用程序中获得了一个用户表,其中用户使用未加盐的 md5 哈希作为密码,并且因为我正在将应用程序迁移到 django,我试图将所有用户放在 auth_user 表中。
参考this 帖子,可以将密码存储为不加盐的 md5 哈希。但这对我不起作用? (python/2.7.6,django/1.6.1)
例如对于具有密码“changeme”的用户,我认为它的格式应该是 md5$$4cb9c8a8048fd02294477fcb1a41191a 还是我遗漏了什么?
编辑: 在 settings.py 我得到了:
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher',
)
我在 views.py 中使用 login_required 装饰器(如果有某种关联):
@login_required
def index(request):
logger.debug('index accessed from %s by %s' % (request.META.get('REMOTE_ADDR'), request.user.username) )
member = members.objects.get(nickname=request.user.username)
context = {'request': request, 'member': member}
return render(request, 'voip/index.html', context)
和以下 urls.py:
url(r'^login/$', 'django.contrib.auth.views.login', {
'template_name': 'voip/login.html'
}),
url(r'^logout/$', 'django.contrib.auth.views.logout_then_login', {
#'template_name': 'voip/logout.html'
}),
只要在 settings.py AUTHENTICATION_BACKENDS 看起来像这样,它就可以工作:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'django_auth_ldap.backend.LDAPBackend',
)
只要我注释掉 django_auth_ldap 它就不起作用。但是如果我随后将 pbkdf2 哈希从最初安装的超级用户(我设置 pw changeme 进行调试)复制到 auth_user 表中我自己的用户,我可以使用密码“changeme”登录...
【问题讨论】:
标签: python django passwords md5