我有一个使用内置模型的项目Python 3.6以及Django 1.11在何处使用内置User模型。用户对象都在默认数据库(即postgres)中,但该项目使用第二个身份验证后端,因为某些用户需要针对旧Oracle数据库进行身份验证。# settings.pyAUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', # new postgres DB 'project_config.auth_backends.OtherBackend', # legacy Oracle DB]到目前为止,这工作正常,但现在我有 3 组用户:一些用户只能进行身份验证,ModelBackend因为他们不在旧数据库中(因为他们是新用户)。一些用户只能在旧数据库中进行身份验证;他们有,usr.has_usable_password() == False因为他们还没有在新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)我没有旧数据库的每个用户的密码,所以想法可能吗?我还没有找到方法,但我愿意接受建议。
1 回答

猛跑小猪
TA贡献1858条经验 获得超8个赞
最后,我不得不接受@ivissani 的建议并查询旧Oracle
数据库中的用户表:
select * from all_users;
有了这些信息,我可以将它与postgres
数据库中的用户进行比较,并找出哪些用户只出现在一个或两个中。
添加回答
举报
0/150
提交
取消