Django-は、ユーザ認証(認証)が付属しています

認証モジュール

django.contribのインポート認証

メソッドモジュール認証

  1. 認証する()   

    つまり、ユーザー名とパスワードが正しいことを確認するために、ユーザ認証機能を提供し、それは通常、ユーザー名、パスワード二つの重要なパラメータを取ります。

    認証は(有効なユーザー名とパスワードが正しい)に成功した場合、それはユーザーオブジェクトを返します。それ以外の場合はNoneを返します

    ()認証ユーザがユーザを認証した識別するために、オブジェクトの後端にプロパティを設定し、それ以降の処理において、ログイン情報が必要です。

    使用法:

    ユーザー= auth.authenticate(要求、ユーザ名= ' theuser '、パスワード= ' thepassword '

     

  2. ログイン(HttpRequestの、ユーザー)

    この関数は、HttpRequestを対象と認定され、ユーザーオブジェクトを受け取ります。

    この機能は、ユーザーのログイン機能を実装しています。本質的には、後端部にユーザーのセッション関連のデータを生成します。

    使用法:

    django.contrib.auth インポート認証、ログイン
       
    DEF my_view(要求):
      ユーザ名 request.POSTの= [ ' ユーザ名' ] 
      パスワード = request.POSTの[ ' パスワード' ] 
      ユーザー =認証(要求、ユーザ名=ユーザ名、パスワード= パスワード)
       IFユーザーはありません ませんなし:
        ログイン(リクエスト、ユーザー)
        #のログインが成功すると、成功のページに戻ります。
        ...
       #のログイン失敗を、ページを返すために失敗しました。 
        ...

     

  3. ログアウト(リクエスト) 

    この関数は、HttpRequestのオブジェクト、ノーリターン値をとります。

    関数が呼び出されると、現在の要求は、すべてのセッション情報をクリアします。ユーザーがログインしていない場合であっても、また文句はありません。この機能を使用しています。

    使用法:

    django.contrib.auth 輸入ログアウト
       
    デフlogout_view(リクエスト):
      ログアウト(リクエスト)
      成功ページにリダイレクトします。

     

  4. is_authenticated()

    現在の要求が認定するかどうかを判断するために使用します。

    使用法:

    デフmy_view(リクエスト):
       場合 ないrequest.user.is_authenticated():
         リターンリダイレクト(' ?%sの次=%sの'%(はsettings.LOGIN_URL、request.path))

     

  5. login_requierd()

    認証は、ビューにチェックを追加する簡単なログインのための装飾的なツールを提供してくれます。

    使用法:

    django.contrib.auth.decorators インポートするlogin_required 
          
    @login_required 
    デフ(要求)をmy_view:
      ...

    ユーザーがログインしていない場合は、DjangoのデフォルトのログインURLにジャンプ「/アカウント/ログイン/」と(成功着陸した後、パスにリダイレクトされます)絶対パスにアクセスするには、現在のURLを渡します。

    あなたは、ログインURLをカスタマイズしたい場合は、settings.pyファイルにLOGIN_URLによって変更する必要があります。

    例:

    = LOGIN_URL /ログイン/   ルートにプロジェクトのログインページを構成し、ここで

     

  6. ユーザーを作成()

    新しいユーザ認証オファーを作成する方法、そうで必要なパラメータ(ユーザ名、パスワード)とを提供することが必要です。

    使用法:

    django.contrib.auth.models インポートするユーザ
    のユーザ = User.objects.create_user(ユーザ名= ' 用户名'、パスワードを= ' 密码'、電子メール= ' 邮箱'、...)

     

  7. create_superuser()

    新しいスーパーユーザーの認証を作成すると、その上で必要なパラメータ(ユーザ名、パスワード)とを提供する方法を提供します。

    使用法:

    django.contrib.auth.models インポートユーザー
     #は、スーパーユーザーがメールフィールドを提供する必要があります作成しますが、空の文字列を提供することができ 
    、ユーザーは= User.objects.create_superuser(ユーザ名= ユーザ名、パスワードは= パスワード、電子メールを= " Eメール"、...)

     

  8. check_password(パスワード)

    パスワード認証のオファーかどうかを確認する正しい方法は、現在のリクエストのユーザーのパスワードを提供する必要があります。

    パスワードが正しいリターン真、そうでなければFalseです。

    使用法:

    user.check_password = OK(' パスワード'

     

  9. set_password(パスワード)

    AUTHによって提供されたパスワードを変更する方法は、パラメータとして設定される新しいパスワードを受け取りました。

    注意:ユーザーオブジェクトの保存メソッドを呼び出してください設定した後!

    使用法:

    user.set_password(パスワード= '' 
    user.save()

    パスワード変更機能の簡単な例

    @login_required
     DEF set_password(リクエスト):
        ユーザー = からrequest.user 
        ERR_MSG = '' 
        もし request.method == ' POST ' 
            OLD_PASSWORD = request.POST.get(' OLD_PASSWORD ''' 
            new_passwordを = request.POST.get(' new_passwordを''' 
            repeat_password = request.POST.get(' repeat_password '''古いパスワードが正しいことを確認してください
            IF user.check_password(OLD_PASSWORD):
                 IF  ないnew_passwordを:
                    ERR_MSG = ' 新しいパスワードを空にすることはできません' 
                elifの new_passwordを=!repeat_password:
                    ERR_MSG = ' 2つのパスワードが一致しない' 
                
                    user.set_password(new_passwordを)
                    user.save()
                    の戻りリダイレクトを(" /ログイン/ " 
                ERR_MSG = ' 古いパスワードの入力エラー' 
        コンテンツ = {
            ' ERR_MSG ' :ERR_MSG、
        } 
        戻り(リクエスト、レンダリング' set_password.html '、コンテンツ)
    パスワードの例を変更します

     

プロパティユーザーオブジェクト

ユーザーオブジェクトのプロパティ:ユーザー名、パスワード

is_staff:ユーザーがサイトの管理者権限を持っているかどうか。

is_active:Falseに設定されたユーザのログインを許可するかどうかは、ユーザーの構内を削除せずにログインからユーザーを停止することができます。

デフォルトのテーブルAUTH_USERを拡張

これは非常に使いやすい認証システムを内蔵したが、AUTH_USERテーブルのフィールドは、それらのいくつかを固定している、私はああプロジェクトに直接持ち込むことはできません!

例えば、私は何をするか、ユーザーの携帯電話番号を格納するフィールドを追加したいですか?

スマート新しいテーブルを考えると、その後一から一によって別のものと内蔵のテーブルAUTH_USER協会、これは要件を満たすことができますが、それを達成するためには良い方法はありませんこと?

答えはではもちろんです。

私たちは、独自のモデルクラスを定義するには、組み込みのAbstractUserクラスを継承することができます。

これは、プロジェクトの設計柔軟なユーザテーブルのニーズに応じていないだけで、Djangoは強力な認証システムを使用することができます。

django.contrib.auth.models インポートAbstractUserの
 クラスのUserInfo(AbstractUser):
     "" " 
    用户信息表
    """ 
    NID = models.AutoField(PRIMARY_KEY = 真)
    電話 = models.CharField(max_lengthを= 11、ヌル=真、ユニーク= 真)
    
    デフ __str__ (自己):
         戻り self.username

注意:

内蔵のテーブルの上のAUTH_USERによって拡大した後、settings.pyでDjangoに伝えるようにしてください、私は今、私は、ユーザー認証を行い、新たに定義されたUserInfoテーブルを使用します。次のように言葉を選びました:

引用DjangoはUserテーブルが付属して、あなたが設定する必要がある場合に使用して継承 
AUTH_USER_MODEL = アプリケーション名.UserInfoを

再び注意:

私たちが使用するテーブルに新しい認証システムを指定すると、我々は、データベース内のテーブルを再作成する必要がありますが、テーブルAUTH_USER元のデフォルトを継続して使用することはできません

おすすめ

転載: www.cnblogs.com/wtil/p/11622582.html