認定の主キーおよびソースコード解析

ソースコード解析

1)最初のdispathのAPIView(自己、要求、* argsを、** kwargsから)を見つけます。

2)dispathメソッド内の3つの認証self.initial(要求、*引数、** kwargsから)に変換します。

self.perform_authentication(リクエスト)
     #の認証コンポーネント:ユーザーを確認する-観光客、違法ユーザーの正当なユーザー
    #1 ゲスト:チェックの代表者は、次のチェック(アクセス権を確認してください)に直接渡される
    による検証に代わって:正当なユーザーユーザーに保存されているからrequest.userし、次のチェック(権限を確認)を入力します
    。#権限のないユーザー:チェックの代理として失敗した上で、例外がスローされますが、403件の権限に異常な結果を返す

self.check_permissions(リクエスト)
     #のチェックユーザー:権限コンポーネントを権利-読み取りと書き込みの観光客を読み取り専用にするにはログイン、すべてのユーザーがログインする必要があり、カスタムユーザーロールの
    #の認証:あなたは、次のチェック(周波数認証)を入力することができます
    #の例外がスローされ、403件の権限を返す異常な結果:認証失敗

self.check_throttlesを(リクエスト)
    #の周波数成分:アクセスするインタフェースの周波数のビューの数を制限-条件(IP、周波数サイクル時間を制限するためのID、固有キー)(S、M、H)、時間(3 /秒)の周波数
    #が限界に達していません時間:通常のアクセスインタフェース
    #は、限られた時間を達成:制限時間にアクセスすることができない、制限に達する時間を再訪することができます

 

 

3)成分を認定。

  ===ユーザーのメソッドgetメソッドのRequestクラス属性> self._authenticateは()認証を完了します。ユーザ(自己)は、GETメソッドを呼び出し、ユーザ(自己、値)メソッドは、セットを呼び出します。

認定ルール:
     #は、認証を行う
    DEFの_authenticate(セルフ):
        トラバースは1つのオーセンティケータ、認証取得
        #の組成リスト生成するように構成された認定クラスオブジェクトパイル認定クラスself.authenticators 
        のための認証をして:self.authenticators
             試しをオーソライザ(オブジェクト)の認証方法の認証(認定クラスオブジェクト自身を、要求されたオブジェクトを要求)を呼び出す
                #の戻り値を:ユーザ認証着陸組成物のタプル情報
                法に代わって、ラップしてみてくださいされて投げ、例外がスローされます異常が認証失敗を表し 
                user_auth_tuple = authenticator.authenticate(セルフ)
             を除くexceptions.APIException:
                self._not_authenticated()
                レイズ

            #は、取引の値を返す
            場合をuser_auth_tupleはありません ませんなし:
                self._authenticator = 認証の
                 値を返すために、どのように、それはログインし、ログイン認証しますからrequest.userに保存され、request.auth 
                self.user、self.auth = user_auth_tuple
                 リターン
        戻り値がnullの場合user_auth_tuple認証の代表者が、そこにはユーザログイン認証がなく、観光客に代わって、ログイン情報を 
        self._not_authenticated()

 

おすすめ

転載: www.cnblogs.com/blue-tea/p/11716937.html