[Django] Authentication


科門托がキャンプをスタートさせたDjango開発実務課程を聞いた後、学んだ内容を駐車分類別に整理したいと思います。


评论职务开始营业


1つの文章で学習したすべての内容とコードが作成されている場合は、この文章は長すぎるので、コアコンテンツのみをまとめます.カリキュラム終了フェーズ(現在6週目)では、学習内容を次のトピックに分けます.
week 1:Django、仮想環境、プロジェクト設定について
週2:モデル、ビュー、テンプレート、テンプレート継承
week3: ORM,
week4: FBV, CBV
week5: Authentication
週6:AWS導入

Django Authentication System


User
Djangoは、ユーザーを管理および作成するために組み込まれたユーザーモデルを提供します.
Djangoのユーザモデルは、usernamepassword、およびオプションのemailfirst_name、およびlast_nameである.
from django.contrib.auth.models import User
ithingv = User('ithingv', password='password')

OR

ithingv = User(
    'ithingv',
    email='[email protected]',
    password='password',
    first_name='ithing',
    last_name='43',
)
電子メールアドレスを使用してユーザーを識別する場合は、ユーザー名に電子メールアドレスを入力し、このアドレスを使用してユーザー認証を行い、構築機能を使用してDjangoで電子メールアドレスを処理することもできます.
Djangoは、passwordのセキュリティ保護を提供します.内蔵password validatorsがあります.必要に応じてカスタマイズすると、パスワードを自分で検証できますが、パスワードルールが多い場合、セキュリティは通常低下します.Djangoパスワード管理の詳細については、ここを参照してください.
また、ユーザーモデル内のオブジェクトを表示およびフィルタすることもできます.
User.objects.filter(first_name='ithingv')
User objectsDjangoのプロパティには、コンテキストに合致するフィールド、プロパティ、メソッドがあります.まずGroupを見てみましょう.
Group
Django Groupはユーザの集合である.ユーザーは複数のグループに属することができますが、グループは他のグループに属することはできません.グループは、Webサイトの機能に特定のグループ・アクセス権を付与するなど、ユーザーのカテゴリを作成するのに役立ちます.ユーザー・グループの名前を付けるだけで、ユーザー・グループを作成できます.
from django.contrib.auth.models import Group
commento_users = Group.objects.create(name='commento_users')
ユーザオブジェクトがグループと複数対多の関係にある場合、addを使用してグループを追加できます.
ithingv.groups.add(commento_users)
Permissions
ユーザー、グループの権限が設定されていない場合は、ユーザーが投稿以外のユーザーの投稿を削除する権限を持たない可能性があります.権限は、Djangoユーザが特定の操作を実行できるかどうかを決定する方法です.has_permを使用して、ユーザ(またはユーザが属するグループ)が特定のオブジェクトまたはオブジェクトの属性を処理する権限を持っているかどうかを確認できます.
from member.models import Commento
if ithingv.has_perm('member.join'):
	Commento.objects.create(name='ithingv')
Authentication
Djangoは、提供されたCredentialsによって既存の登録ユーザを認証することができる.ユーザが一致すると、そのユーザオブジェクトが返され、そうでなければNoneが返される.
from django.contrib.auth import authenticate
user = authenticate(
    username='ithingv',
    password='password'
)
これにより、ユーザーは有効な権限を持っていますが、ユーザーのログイン状態は維持されません.そのためには、Djangoのログイン機能とユーザー認証を使用する必要があります.次の方法では、現在のリクエスト・オブジェクトと承認されたユーザー・オブジェクトを受け入れ、成功したときにユーザーをログイン成功ページにリダイレクトします.
from django.contrib.auth import login
...
if user:
    login(request, user)
else:
    # invalid login, redirect to some kind of error page
Sessions
ユーザがサーバにページを要求するたびに、ブラウザから送信されるHTTP要求は複数の階層で処理され、最終的にDjangoサーバに到達する.
要求が入力された場合、アプリケーションとミドルウェアにDjango認証機能がインストールされている場合は、ユーザーリファレンスが必要です.Djangoは、ブラウザで設定されたCookieに基づいてデータベースからインポートされたデータビットに基づいて、Sessionを使用してこの操作を実行します.ユーザーがページにアクセスすると、クッキー値は、データベースにアクティブなセッションがあるかどうかを決定するために使用されます.この場合、ユーザーが検証されます.セッションが期限切れまたは存在しない場合は、ユーザーは再ログインする必要があります.
user.is_authenticated
requestオブジェクトには常にユーザーへの参照があるため、ユーザータイプを区別する必要があります.この場合、request.user.is_authenticatedプロパティを使用できます.このプロパティは、ユーザーがログインしているかどうかTrue/Falseを返します.
認証されていない場合、request.userAnonymousUser objectになります.ユーザーがログインしていないか、最初のアクセス者である場合に発生します.ログインユーザの論理を使用する場合、request.user.is_authenticatedを使用してユーザを区別することができる.

教室の画面