如何从 django 管理站点中删除更改密码链接?

Posted

技术标签:

【中文标题】如何从 django 管理站点中删除更改密码链接?【英文标题】:How to remove change password link from django admin site? 【发布时间】:2020-06-17 04:00:47 【问题描述】:

我正在为我的 django Web 应用程序使用活动目录登录身份验证。所以不需要在管理站点更改密码链接。

我搜索了很多文章,但我没有找到任何隐藏更改密码链接的东西。 那么对管理员隐藏更改密码链接的方法是什么?

【问题讨论】:

【参考方案1】:

您不需要覆盖管理模板。

如果user.has_usable_password() 返回False,则Django will not display change password URL for that user。

user.has_usable_password()可以通过调用user.set_unusable_password()返回False

来自docs:

set_unusable_password()

将用户标记为未设置密码。这与密码的空白字符串不同。 check_password() 这个用户永远不会返回True。不保存用户对象。

如果您的应用程序的身份验证是针对现有的外部源(例如 LDAP 目录)进行的,您可能需要这样做。

has_usable_password()

如果已为此用户调用了set_unusable_password(),则返回False

Source code for condition filter in Django base admin template:

% if user.has_usable_password %
    <a href="% url 'admin:password_change' %">% translate 'Change password' %</a> 
% endif %

【讨论】:

它不起作用。我覆盖了'django_auth_ldap.backend.LDAPBackend'并在那里调用'user.set_unusable_password()'。因此用户'has_usable_password()'返回False,但密码更改区域仍然存在

以上是关于如何从 django 管理站点中删除更改密码链接?的主要内容,如果未能解决你的问题,请参考以下文章

React,Django:用户更改密码后如何管理会话?

如何在 django 管理站点中使用 django-select2 小部件?

Django - 管理员 - 表单更改

在 Django 管理站点中,如何通过内联访问模型属性?

在Django Admin中更改密码

Django:删除管理员用户更改表单中的“现场查看”按钮