如何从 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 管理站点中删除更改密码链接?的主要内容,如果未能解决你的问题,请参考以下文章