我有一个使用Python 3.6
和Django 1.11
的项目,其中我使用内置的User
模型。你知道吗
用户对象都在默认数据库(即postgres
)中,但是项目使用第二个身份验证后端,因为一些用户需要根据遗留Oracle
数据库进行身份验证。你知道吗
# settings.py
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend', # new postgres DB
'project_config.auth_backends.OtherBackend', # legacy Oracle DB
]
到目前为止,这还不错,但现在我有3组用户:
ModelBackend
中进行身份验证,因为他们不在旧数据库中(因为他们是新用户)。你知道吗postgres
数据库中设置密码。你知道吗出于审计目的,我想列出所有用户,并查看每个用户都有哪些后端可用(暂时忽略is_active
标志),以简化审计任务。
我的想法是使用一个类似这样的循环:
for usr in User.objects.all():
backend_list = []
if usr.has_usable_password():
backend_list.append('ModelBackend')
if ... : # what should I check here ?
backend_list.append('OtherBackend')
print(usr, backend_list)
我没有遗留数据库的每个用户的密码,所以这个想法可能吗?你知道吗
我还没有找到办法,但我愿意接受建议。你知道吗
最后,我不得不接受@ivissani的建议,在遗留的
Oracle
DB中查询users表:有了这些信息,我可以将它与
postgres
DB中的用户进行比较,找出哪些用户只出现在一个或两个数据库中。你知道吗相关问题 更多 >
编程相关推荐