我有一個使用內置模型的項目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
提交
取消