4

Shibboleth 対応サーバーで Django サイトを実行しているため、リモート ユーザー認証バックエンドを使用しています。すべてのユーザーは、このサービス (LDAP など) を介して認証されます。これは私にとってはうまくいきます。ただし、私のサイトはロックダウンされているため、staff グループに属するユーザーのみがビューにアクセスできます。そのため、「スーパーユーザー」がデータベースまたは管理サイトにアクセスして、ユーザーをスタッフに変更する必要があります。Django 管理サイトでリモート ユーザーを事前作成/事前承認できるように、このワークフローを好転させたいと考えています。アカウントの「スタッフ」フラグ。

問題は、Django 管理サイトがすべての新規ユーザーのパスワードを入力することを期待していることです。ただし、私のデータベースでは、リモート ユーザーのパスワード フィールドは空白です。パスワード フィールドの内容はリモート認証には関係ないように見えますが、スーパー管理者がすべての人に「偽の」パスワードを設定する必要はないようにしたいと思います。 .

MySQL データベースで直接ユーザーを作成すると、パスワード フィールドを空白のままにしておくことができるため、リモート ユーザーを問題なく作成できます。ただし、他のスーパー管理者にデータベースへの直接アクセスを渡したくないです。

この 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 管理ビューを何とか利用する方法はありますか?

ありがとう!

4

1 に答える 1

2

独自の を作成しますUserCreationForm。Django の実装をガイドとして使用しますが、パスワード フィールドとset_passwordsave メソッドの呼び出しは省略します。

次に、カスタム ユーザー作成フォームを使用するように MyUserAdmin に指示します。

class MyUserAdmin(UserAdmin):
    add_form = MyUserCreationForm
于 2013-10-31T15:53:13.540 に答える