亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為 Django 用戶列出可用的身份驗證后端?

如何為 Django 用戶列出可用的身份驗證后端?

慕標琳琳 2021-08-24 16:36:02
我有一個使用內置模型的項目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數據庫中的用戶進行比較,并找出哪些用戶只出現在一個或兩個中。


查看完整回答
反對 回復 2021-08-24
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號