認証モジュール
django.contribのインポート認証
メソッドモジュール認証
-
認証する()
つまり、ユーザー名とパスワードが正しいことを確認するために、ユーザ認証機能を提供し、それは通常、ユーザー名、パスワード二つの重要なパラメータを取ります。
認証は(有効なユーザー名とパスワードが正しい)に成功した場合、それはユーザーオブジェクトを返します。それ以外の場合はNoneを返します
()認証ユーザがユーザを認証した識別するために、オブジェクトの後端にプロパティを設定し、それ以降の処理において、ログイン情報が必要です。
使用法:
ユーザー= auth.authenticate(要求、ユーザ名= ' theuser '、パスワード= ' thepassword ')
-
ログイン(HttpRequestの、ユーザー)
この関数は、HttpRequestを対象と認定され、ユーザーオブジェクトを受け取ります。
この機能は、ユーザーのログイン機能を実装しています。本質的には、後端部にユーザーのセッション関連のデータを生成します。
使用法:
django.contrib.auth インポート認証、ログイン DEF my_view(要求): ユーザ名 request.POSTの= [ ' ユーザ名' ] パスワード = request.POSTの[ ' パスワード' ] ユーザー =認証(要求、ユーザ名=ユーザ名、パスワード= パスワード) IFユーザーはありません ませんなし: ログイン(リクエスト、ユーザー) #のログインが成功すると、成功のページに戻ります。 ... 他: #のログイン失敗を、ページを返すために失敗しました。 ...
-
ログアウト(リクエスト)
この関数は、HttpRequestのオブジェクト、ノーリターン値をとります。
関数が呼び出されると、現在の要求は、すべてのセッション情報をクリアします。ユーザーがログインしていない場合であっても、また文句はありません。この機能を使用しています。
使用法:
django.contrib.auth 輸入ログアウト デフlogout_view(リクエスト): ログアウト(リクエスト) #成功ページにリダイレクトします。
-
is_authenticated()
現在の要求が認定するかどうかを判断するために使用します。
使用法:
デフmy_view(リクエスト): 場合 ないrequest.user.is_authenticated(): リターンリダイレクト(' ?%sの次=%sの'%(はsettings.LOGIN_URL、request.path))
-
login_requierd()
認証は、ビューにチェックを追加する簡単なログインのための装飾的なツールを提供してくれます。
使用法:
django.contrib.auth.decorators インポートするlogin_required @login_required デフ(要求)をmy_view: ...
ユーザーがログインしていない場合は、DjangoのデフォルトのログインURLにジャンプ「/アカウント/ログイン/」と(成功着陸した後、パスにリダイレクトされます)絶対パスにアクセスするには、現在のURLを渡します。
あなたは、ログインURLをカスタマイズしたい場合は、settings.pyファイルにLOGIN_URLによって変更する必要があります。
例:
= LOGIN_URL 「/ログイン/ 」 #ルートにプロジェクトのログインページを構成し、ここで
-
ユーザーを作成()
新しいユーザ認証オファーを作成する方法、そうで必要なパラメータ(ユーザ名、パスワード)とを提供することが必要です。
使用法:
django.contrib.auth.models インポートするユーザ のユーザ = User.objects.create_user(ユーザ名= ' 用户名'、パスワードを= ' 密码'、電子メール= ' 邮箱'、...)
-
create_superuser()
新しいスーパーユーザーの認証を作成すると、その上で必要なパラメータ(ユーザ名、パスワード)とを提供する方法を提供します。
使用法:
django.contrib.auth.models インポートユーザー #は、スーパーユーザーがメールフィールドを提供する必要があります作成しますが、空の文字列を提供することができ 、ユーザーは= User.objects.create_superuser(ユーザ名= 「ユーザ名」、パスワードは= 「パスワード」、電子メールを= " Eメール"、...)
-
check_password(パスワード)
パスワード認証のオファーかどうかを確認する正しい方法は、現在のリクエストのユーザーのパスワードを提供する必要があります。
パスワードが正しいリターン真、そうでなければFalseです。
使用法:
user.check_password = OK(' パスワード')
-
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元のデフォルトを継続して使用することはできません。