認証モジュール:ユーザー認証
当社の事前認証モジュールの認証方法は無用です:認証
DEF (要求を)auth_login: IFは == request.method ' POST ' : ユーザ名 = request.POST.get(' ユーザ名' ) パスワード = request.POST.get(' パスワード' ) models.User.objects.filter(ユーザ名 =ユーザ名、パスワード= パスワード)1次回() #私たちはDjangoのクエリテーブルをORMは、該当するデータを持っていない、あらゆる成功したログインが 返すレンダリング(リクエスト、「auth_login.htmlを」)
認証モジュールで:
DEF (要求を)auth_login: IFは == request.method ' POST ' : ユーザ名 = request.POST.get(' ユーザ名' ) パスワード = request.POST.get(' パスワード' ) #models.User.objects.filter(ユーザ名ユーザ名=、パスワード=パスワード)1次回() USER_OBJ = auth.authenticate(要求、ユーザ名=ユーザ名、パスワード= パスワード) #上記の文の実装に対応する、ユーザ・オブジェクトを取得するために、取得した平文パスワードが自動的に転送されます。する比較暗号文データベース 戻るレンダリング(リクエスト、「auth_login.html 」)
ログインに成功ステータスのログイン記録したユーザ:auth.login
#レコードのユーザ状態は ますrequest.session [なり「名称」 ] = 名 #認証モジュールが記録 auth.login(要求、USER_OBJ) #は、オブジェクトがAUTHが、レコード、缶に格納されている間、ますrequest.sessionのみ文字列を保存させますどこかからrequest.userを通じて現在ログインオブジェクトを取得する
AnonymousUse(匿名ユーザー)を返しますからrequest.userの背景を取るためにサインアウトを
:現在のユーザーのログインかどうかを確認is_authenticated
request.user.is_authenticated()
#のログバックトゥーレ
ログ:ジンバブエログアウト
auth.logout(リクエスト) #相当于 request.session.flush()
認証モジュールの登録機能が完了するとすべての認証とそれを使用し、覚えています
場合は、登録ユーザー割引:CREATE_USER
models.User.object.create(ユーザ名=ユーザ名、パスワード= パスワード) User.objects.create(ユーザー名 =ユーザー名、パスワード= パスワード) #を作成、またはパスワードがクリアテキストで保存されている使用することはできませんユーザーを保存するにはこちらを User.objects .create_user(ユーザ名 =ユーザ名、パスワード= パスワード) #通常のユーザー作成 User.objects.create_superuserを(ユーザ名=ユーザ名、パスワード=パスワード、電子メール= 「[email protected] 」) #が必要、バックオフィスシステムのログを、スーパーユーザを作成しますメールボックス。
パスワードの変更:check_password、のsetPassword
DEF AUTH_PASSWORD(要求): 印刷(request.user.password) #印刷されたパスワード暗号化されたテキスト OLD_PASSWORD = request.POST.get(' OLD_PASSWORD ')#取得ユーザーによる古いパスワードの入力 new_passwordを= request.POST.get(' new_passwordを')#GETユーザーが入力した新しいパスワード is_res = request.user.check_password(OLD_PASSWORD) #データベースの比較には、正しい 場合はis_res: request.user.setpassword(new_passwordを)#は、新しいパスワードの設定 request.user.saveを()#パスワードの保存、このステップでは、そうでない場合は、パスワードが変更されることはありません、小さくすることはできません
ログイン認証:login_required
django.contrib.auth.decorators インポートするlogin_required (LOGIN_URL @login_required = ' /ログイン/ ') #局部配置 デフホーム(リクエスト): リターンはHttpResponse(' OK ')
#設定を構成するには、グローバル・コンフィギュレーション・パラメータ LOGIN_URL = 「/ログイン/ 」 から django.contrib.auth.decorators インポートlogin_required @login_required #グローバルコンフィギュレーションページに直接ジャンプするジャンプするページを指定する必要はありませ後部デコレータを DEF ホーム(リクエストを): 返す(はHttpResponseを' OK ')
デフォルトのテーブルAUTH_USERを拡張
ユーザーのフィールドに保存されている電話番号を追加したいです
私たちは、独自のモデルクラスを定義するには、内蔵AbstractUserクラスを継承することができます。
django.contrib.auth.models インポートAbstractUser クラスのUserInfo(AbstractUser): #はAbstractUser継承 "" " ユーザ情報テーブルを """ NID = models.AutoField(PRIMARY_KEY = TRUE) #これは自分のクラスで同じですが、導出することができます新しいフィールドの 電話番号= models.CharField(MAX_LENGTHは= 11、ヌル= Trueの場合、UNIQUE =真。) # DEF __str__ (セルフ): リターン self.usernameの#の文字列が出力されます
注意:
内蔵のテーブルの上のAUTH_USERによって拡大した後、settings.pyでDjangoに伝えるようにしてください、私は今、私は、ユーザー認証を行い、新たに定義されたUserInfoテーブルを使用します。次のように言葉を選びました:
#引用DjangoはUserテーブルが付属して、あなたが設定する必要がある場合に、データベース・マイグレーションなしでの使用に継承、できない AUTH_USER_MODEL = 「アプリケーション名.UserInfo 」
再び:
私たちが使用するテーブルに新しい認証システムを指定すると、我々はデータベースに再作成テーブルする必要がありますが、テーブルAUTH_USER元のデフォルトを継続して使用することはできません。