認証と差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」