1

標準のDjangoAdminを使用しないマルチテナントアプリケーションを作成しています(すべてのテナントにアクセスできる内部使用を除く...これは非常に簡単です)。独自の認証システムを作成しようとしていますが、標準のユーザーモデル(または組み込みアプリケーションのモデル)を使用することに興味がありません。私のアプリケーションにはアカウントがあり、各アカウントには管理者がいます(名前の衝突のために管理者とユーザーを使用する必要がありました)。それらのユーザーは、私自身の完全にカスタムのシステムを使用して認証します。これはすべて間違っていますか?独自のカスタムインターフェイスを使用するマルチテナントの状況で、Djangoの認証システムを引き続き使用する必要がありますか/できますか(前述のように、アカウント所有者がデフォルトの管理インターフェイスを使用することを許可しません)。

多くのDjangoは、独自の管理者でマルチテナントSAASソフトウェアを構築するのではなく、管理インターフェースを使用するという考えに基づいて構築されているように思われます。私はこれをすべて間違っていると思っていますか?

4

1 に答える 1

3

あなたは間違いなくDjango認証システムを使用する必要があります、それでもあなたが必要とするものの90%を行います。

1つのプロジェクトで、シナリオとまったく同じように見えるものを作成しました。それぞれに管理者ユーザーと複数の通常ユーザーがいる企業アカウントです。

私が使用したモデル構造は次のとおりです。

class Account(models.Model): # represents copporate customer
    admin = models.ForeignKey(User)
    # other fields ...

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    account = models.ForeignKey(Account)

また、カスタムデコレータを使用してビューレベルで承認要件を適用するいくつかの例:

@account_access_required # request.user.get_profile().account == account
def account_page(request, account_id):
    # ...

@account_admin_required # request.user == account.admin
def account_users(request, account_id):
    # ...

実際にはアカウントにサブドメインを使用したため、明示的なaccount_idパラメーターは必要ありませんでした。

アカウント管理者にカスタムインターフェイスを使用することは非常に合理的です。Django管理インターフェースは、システム管理者や内部サポートスタッフなどの100%信頼できるユーザーのみを対象としています。

于 2010-02-18T20:12:33.630 に答える