2

私はプロジェクトとして SAAS を作成していますが、恐竜の脳をこの認証システムに巻き付けることができないようです。通常の認証システムに追加できることに気付く前に、私は独自のシステムを展開し始めました。これは完全に間違っていますか?User モデルを何らかの方法で拡張する必要がありますが、独自の属性 (ユーザー名、パスワードなど) をすべて含める必要がありますか?

from django.db import models
from django.contrib.auth.models import User
from annoying.fields import AutoOneToOneField
from myproject.core.modelfields import LowerAlphanumericField
from myproject.apps.account.models import Account

class Administrator(models.Model):
    """
    Administrator for an Account (application holds multiple accounts as it is a SAAS).
    """
    account = models.ForeignKey(Account)
    user = AutoOneToOneField(User, primary_key=True)
    name = models.CharField(max_length=255)
    email = models.EmailField()
    username = LowerAlphanumericField(max_length=30)
    password = models.CharField(max_length=255)

http://127.0.0.1:8080/admin/auth/user/3/にアクセスするとエラーが表示されますが、作成した 3 番目の管理者オブジェクトのプライマリ キーは 3 です (これは、関連する User オブジェクトです。何か足りないものがありますか?また、パスワード フィールドを作成する必要がありますか?

4

2 に答える 2

4

それほど多くの追加情報を追加する必要はないように思えます。Django auth は、探しているすべての側面をカバーしています。

  • ユーザー名
  • パスワード (sha1 ハッシュ)
  • ファーストネーム
  • 苗字
  • Eメール

また、Django auth にはかなり便利な権限システムもあります。

  • スーパーユーザー
  • スタッフ
  • アクティブ

User オブジェクトに追加情報を追加したいときはいつでも、通常は新しいモデルを作成し、User への参照を保存します。

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    # Extra functionality

そして、@bste の提案に従いAUTH_PROFILE_MODULE = 'accounts.UserProfile'、設定ファイルに追加します。get_profile()これにより、任意のUserオブジェクトのメソッドを使用してユーザー プロファイル (追加情報) にアクセスできます。

于 2010-02-19T13:56:37.563 に答える
2

すでに組み込みのdjango 認証を使用していますか? はいの場合は、ユーザーに関する追加情報を格納できる User モデルに関連するモデルを指定できます。ここで説明されています:http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

次の行を追加するのは簡単です。

AUTH_PROFILE_MODULE = 'accounts.Adminstrator'

パスワードを自分で保存する必要はありません.djangoがこれを行うと思います

于 2010-02-19T00:58:21.190 に答える