我们最近从一个 LDAP 系统切换到另一个。不幸的是,不仅 LDAP 服务器发生了变化,而且所有用户名也发生了变化。
我设法配置django_auth_ldap
处理两个 LDAP 服务器,但是我无法阻止在我的数据库中创建新用户。
我试图连接一个监听器,django_auth_ldap.backend.populate_user.connect
但该信号被评估after
为一个用户已经创建。
那么最好的方法是什么:
- 验证用户
- 检查用户名是否在数据库中
- 检查数据库中的替代用户名
- 必要时更新用户名(找到新旧用户映射)
- 如果在任何地方都找不到,则创建新用户
编辑我知道信号处理程序,但我不知道如何(以及在代码中的何处)解决防止重复用户创建的任务。我应该在哪里连接我的代码来检查旧用户名和新用户名?
编辑2:
我已尝试关注,但仍在new_name
创建用户。
# touple of old user and new user names
username_list = [('old_name', 'new_name') ]
@receiver(pre_save, sender=User)
def check_if_user_exists(sender, **kwargs):
try:
print "check_if_user_exists:"
user_instance = kwargs['instance']
print user_instance
if any([x[1] == user_instance.username for x in username_list]):
print "new user name found!"
# get old username
user = User.objects.get(username = x[0])
user.username = user_instance.username
return user
else:
print "user not found :("
except ObjectDoesNotExist:
print ('user not found')
pass