Django通过管理站点添加远程用户

Django通过管理站点添加远程用户,django,authentication,remoteusermiddleware,Django,Authentication,Remoteusermiddleware,我正在启用Shibboleth的服务器上运行Django站点,因此使用。所有用户都通过此服务(如LDAP)进行身份验证。这对我有用。但是,我的站点被锁定,因此只有属于staff组的用户才能访问视图——因此这需要“超级用户”进入数据库或管理站点,并将用户更改为staff。我想改变这个工作流,这样我就可以在Django管理站点中预创建/预授权远程用户,这样当他们第一次尝试登录时,他们就不必等待有人在他们的帐户上翻转“staff”标志 问题是Django管理站点希望您为所有新用户输入密码。不过,在我的

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

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

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

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

我的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的实现为指导,但在save方法中省略密码字段和
set\u password
调用

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

class MyUserAdmin(UserAdmin):
    add_form = MyUserCreationForm

实现这一点的简单方法是使用django social authentication后端。它适合我。谢谢drabo,我不知道那个插件!遗憾的是,我没有在支持的网站列表中看到Shibboleth(甚至不知道这是否可能)…并且尝试创建一个单独的插件可能相当于在这一点上创建我自己的表单?