AUTH本体(RBAC)は、6回の表

認証と差1.RBAC

RBACに基づいて、比較的高いポイントを使用し、一般的にDjagno認証します

2.RBAC(役割ベースの_1アクセスコントロール)表六間のデータ伝送

    2.1 Djangoは、RBAC認証ルールを使用してRBACは、通常、Djangoはわずか6メートルのルールと、次に、3つの表は、5メートルのルールに分割されているルール

    3つのテーブル:ユーザー>>> Userテーブル

    グループ>>>役割テーブル

    許可>>>権限テーブル

 

 

 Djangoの権限を6台

 

 

 

 5つのテーブル:ユーザ・テーブル、テーブルの役割、権限テーブル、ユーザーとロールのテーブル、ロール権限テーブル

シックス・テーブル:ユーザ・テーブル、テーブルの役割、権限テーブル、ユーザーとロールのテーブル、テーブルの役割の権限、ユーザーと権利

許可:許可テーブル

グループ:ロールテーブル  

メートルDjango.contrib.auth.modelsインポートユーザーあちこち  

(1)このクラスはAbstractUserを継承します

django.db インポートモデル

ここに壁紙をあなたのモデルを作成します。

重要:私たちのカスタム・ユーザー・テーブル場合は、ネイティブのユーザー・テーブルを使用して別のプロジェクトでは、完全なデータベースの移行が失敗する可能性があります*(1)ジャンゴをアンインストールするにはどうすればよいです交換       (2)空データベース移行コマンドで管理のcontrib以下Djjangoレコード以下


から django.contrib.auth.models インポートAbstractUserの


クラスのユーザ(AbstractUserを):  AbstractUuserを継承) 
    モバイル= models.CharField(MAX_LENGTH = 11 #のカスタム作成されたテーブル名の
    クラスのMeta:
        DB_Tableの = ' api_user ' 
        verbose_name = "ユーザーテーブル" 
        verbose_name_plural = verbose_name 

    DEF  __str__ (セルフ):
         リターンself.usernameの

#のユーザーが関連付けられている権限テーブルの下にテーブルにアクセスする方法は>>>(許可)ユーザーの外部キーフィールドがuser_permission ???ですアクセスする方法をユーザー・ロールテーブル>>>ユーザーの下の表(グループ)クエリフィールドは>>>グループ
#は、ユーザー権限テーブルrelated_name = user_set「user_set」、アクセスするためのフィールドを逆に
#のユーザーの役割テーブルrelated_name = user_set「user_set」、アクセスするために、逆のフィールドを

#のグループアクセステーブルの許可を

」 「」
 アクセス権= models.ManyToManyField(
        逆に名前が付けられていないものの許可は、group_set >>>>前方のフィールドによると
        、(「権限」)= _ verbose_nameを
        真=空白、
「」」
からdjango.contrib.auth.modelsは、インポートするユーザ
 1。自定义ユーザー表

「」」




クラスのユーザー(AbstractUser): 这里源码是注释掉的
    Djangoの認証システム内のユーザーが、このことで表現される
    。モデルの

    ユーザー名、パスワード、および電子メールがあります。必要な他のフィールドはオプションです。
    
    クラスのMeta(AbstractUser.Meta):
        スワップ可能= 'AUTH_USER_MODEL' 
 ""」

(2)設定で配置されています

 

元の名前を持つカスタムユーザー設定の表には、もはや私たち自身のカスタムテーブルではなく、テーブルをジャンゴない 
AUTH_USER_MODEL = api.user 

 

(3)データベース移行コマンドPythonのmanage.pyのmakemigtrations >>> Pythonのmanage.pyのマイグレーション

シックス・テストテーブル

トレースバック(最新の呼び出しの最後):
  ファイル" :\ day74_djprojの\スクリプト\のt_model.py D "、10行目の中で、<モジュール> 
    ユーザー = models.User.objects.first()
  ファイル" C:10243 \のAppData \ \ユーザー\ローカル\プログラム\ Pythonの\ Python36 \ libには\サイト-パッケージ\ジャンゴ\ DB \モデル\ manager.py "、行198、 __get__ 
    cls._meta.swapped、
はAttributeError:マネージャーISN " tは利用できます。 auth.Userはと交換されてきた api.user 

cls._meta.swapped、

 

AttributeError:マネージャー使用不能;認証。ユーザーはapi.userを交換されています

その理由は、間違っています

django.contrib.auth.models インポートユーザ
#1 カスタムユーザーテーブルを

これは、ガイドとしてのモジュールに導入され、そのユーザーのユーザーを認識しません。 

Userテーブル正逆 

六表之间的测试

インポートOS、ジャンゴ

os.environ.setdefault(" DJANGO_SETTINGS_MODULE "" day74_djproj.settings " 
django.setup()
からのAPI インポートモデル
ユーザー = models.User.objects.first()
 #1 プリント( user.username、タイプ(ユーザー))管理者<クラスのapi.models.User '> 
印刷(ユーザー、タイプ(ユーザー))   管理者<クラスのapi.models.User'>直接获取对象
プリント(user.groups。最初の()。名前)   OK 
プリント(user.user_permissions.first()。名前)    #は用户を追加することができます表

Goupテーブル正逆

#の文字テーブルのクエリ
から django.contrib.auth.models インポートグループ
グループ = Group.objects.first()
 印刷(group.name)  OK 

ユーザーが下にグループ化されている
印刷(group.user_set.first()。ユーザー名)

#の役割権限テーブル差テーブル
を印刷(group.permissions.first()。名前)   ユーザテーブルを変更することができますの

アクセス権テーブル正逆

django.contrib.auth.models 輸入許可
P_16 = Permission.objects.filter(PK = 16 )1次回()
 プリント(P_16.user_set.first()。ユーザ名)   管理者 
p_17 = Permission.objects.filter(PK = 17 )1次回()
 プリント(p_17.group_set.first()。名前)   管理员

 

カスタムユーザーオリジナルの名前でテーブル構成は、もはやDjangoのない当社独自のカスタムテーブルではなく、テーブルを
AUTH_USER_MODEL = 「api.user」

おすすめ

転載: www.cnblogs.com/mofujin/p/11723707.html