如何列出Django用户可用的身份验证后端?

时间:2018-11-21 14:09:04

标签: python django

我有一个使用if (ke)Python 3.6的项目,其中使用了内置Django 1.11模型。

用户对象都在默认数据库(User)中,但是该项目使用了第二个身份验证后端,因为某些用户需要针对旧版postgres数据库进行身份验证。

Oracle

到目前为止,此方法还可以,但是现在我有3个用户组:

  • 某些用户只能在# settings.py AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', # new postgres DB 'project_config.auth_backends.OtherBackend', # legacy Oracle DB ] 中进行身份验证,因为它们不在旧版数据库中(因为它们是新用户)。
  • 某些用户只能在旧版数据库中进行身份验证;他们之所以拥有usr.has_usable_password() == False,是因为他们尚未在新的ModelBackend数据库中设置密码。
  • 一些用户可以在两个后端进行身份验证,甚至每个用户都可以使用不同的密码进行身份验证;这是因为他们在新系统中更改了密码,但是根据设计,更改不会被传输回旧数据库(不要开枪让我,更改旧数据库中密码的唯一方法是通过以下方式手动进行操作:用户界面)。

出于审计目的,我想列出所有用户,并查看每个用户都有哪些后端(暂时忽略postgres标志)以简化审计任务。 我的想法是使用与此类似的循环:

is_active

我没有用于旧数据库的每个用户的密码,所以想法甚至可能吗?

我还没有找到方法,但是我愿意接受建议。

1 个答案:

答案 0 :(得分:0)

最后,我不得不接受@ivissani的建议,并在旧版Oracle DB中查询users表:

select * from all_users;

有了这些信息,我可以将其与postgres数据库中的用户进行比较,并确定哪些用户只出现在一个或两个中。