【问题标题】:Django adding Remote Users with admin siteDjango 使用管理站点添加远程用户
【发布时间】:2013-10-31 14:24:32
【问题描述】:

我在支持 Shibboleth 的服务器上运行 Django 站点,因此使用了Remote User authentication backend。所有用户都通过此服务(如 LDAP)进行身份验证。这对我有用。但是,我的站点已被锁定,因此只有属于员工组的用户才能访问视图——因此这需要“超级用户”进入数据库或管理站点并将用户更改为员工。我想扭转这个工作流程,这样我就可以在 Django 管理站点中预先创建/预先授权远程用户,所以当他们第一次尝试登录时,他们不必等待某人翻转他们帐户上的“员工”标志。

问题在于 Django 管理站点希望您为所有新用户输入密码。但是,在我的数据库中,远程用户的密码字段为空白——虽然密码字段的内容似乎与远程身份验证无关,但我希望超级管理员不必为每个人设置“假”密码.

如果我直接在 MySQL 数据库中创建用户,我可以很好地创建远程用户,因为我可以将密码字段留空。但是,我不希望将直接数据库访问权限分配给其他超级管理员。

我已尝试根据this SO post 从管理站点中删除密码字段。但它仍然返回一个验证错误,我缺少一个字段(即密码)。

我的 admin.py:

from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

admin.site.unregister(User)

class MyUserAdmin(UserAdmin):
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email',)}
        ),
    )

admin.site.register(User, MyUserAdmin)

问题:在 Django 设置中预填充授权远程用户的最佳方法是什么?我正在使用 MySQL 运行 1.5.1。如果我创建自定义添加用户视图,这是最简单的方法吗?或者有没有办法以某种方式利用现有的 Django 管理视图?

谢谢!

【问题讨论】:

  • 最简单的方法是使用 django-social-authentication 后端。它对我有用。
  • 谢谢 drabo,我不知道那个插件!很遗憾我在支持的站点列表中没有看到 Shibboleth(甚至不知道是否有可能)......并且尝试创建一个单独的插件可能相当于此时制作我自己的表单?

标签: django authentication remoteusermiddleware


【解决方案1】:

创建您自己的UserCreationForm。使用 Django 的实现作为指导,但在 save 方法中省略密码字段和 set_password 调用。

然后告诉您的 MyUserAdmin 使用您的自定义用户创建表单。

class MyUserAdmin(UserAdmin):
    add_form = MyUserCreationForm

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2020-09-03
    • 2012-10-12
    • 1970-01-01
    • 2013-07-31
    • 2016-05-13
    相关资源
    最近更新 更多