こうしたクライアントのクッキー情報と協力する必要が格納され、ログイン時に達成するためにセッション・サーバに格納されたログイン機能を作るとして回答技術。具体的には、ユーザーのクッキー情報に保存されている特殊なトークン情報、ユーザーがサイトにアクセスするための特別なトークンを保持している場合、サイトは、セッションかどうかを確認するために、データベースへのクッキーからこの特別なトークンを取得しますこの情報は、検証が失敗した場合、ユーザーがログインしてそうプロンプトされていないよう求められ、認証が成功した場合、あなたはクライアントにユーザーの情報の背中を置くことができ、トークン対応しています。
HTTPクッキーが原因を保持することはできませんhttpプロトコルが、実際には、契約の範囲に属していないが、我々は「ホールド」に必要なので、クッキーは、このようなAシナリオの下に生まれています。
作品クッキーです:サーバーから生成されたコンテンツは、ブラウザがローカルに保存された要求を受信、ブラウザの訪問は、ブラウザが自動的にクッキーを持って来るとき、そのサーバは、クッキーの内容によって判断できること「です「A。
クッキーは、「保留」の要件、ある程度解決しますが、クッキー自体が原因では4096バイトまでサポートし、クライアント自体に保存されたクッキーは、傍受または盗難することができるので、何か新しいものの必要性は、それが、あるがより多くのバイトをサポートする、と彼は、サーバー上に保存され、高いセキュリティがあります。それはセッションです。
ステートレスのHTTPプロトコルの特性に基づいている質問、サーバーが訪問者を知らない「誰が。」そして、上記のクッキーは、ブリッジの役割を果たします。
そのユーザーがクッキーを介してアクセスして私たちは、各クライアントの割り当てのユニークなIDクッキーを与えることができ、サーバは、人々に知っています「」その後、我々のIDなど、「アカウントのパスワード」としてクッキーに基づいて異なる、いくつかの時間のためにサーバーに保存された個人情報、など。
要約すると:クッキーは、HTTPステートレスの不足を補う「」人にサーバーを知ることができるように、しかし、テキスト形式のクッキーがローカルに保存され、彼らのセキュリティが貧弱であり、私たちはクッキーによって異なるユーザを識別することができますので、セッションで4096バイトより個人情報及びテキストの保存に対応します。
また、上記のクッキーとセッション共通点は、言語やフレームワークに限定されるものではない何かが実際にあります
####
1.クッキー
HTTPプロトコルはステートレスです。そのため、他の手段を用いた場合、リモートサーバーとクライアントが通信を行っていたものを前に知ることができません。クッキーはの一つである「他の手段。」クッキーA一般的なアプリケーションのシナリオは、サイトにログインしているユーザーを記録するために使用されます。
成功したユーザーがログインした後、次のサーバは、(通常は暗号化された)クッキーファイルを送信します。クライアント(通常はWebブラウザ)は、受信したファイルのCookieを保存します。クッキーを送信するために、サーバーへの次回のクライアントが接続するには、サーバはその意味を確認し、サーバーにファイル(再度ログインを避けるために)記録さリストア。
#####
1.1説明
答えは技術的なブラウザ |
#####
1.2クッキーの方法
设置:response.set_cookie(キー、値、max_ageの=なし、exprise =なし) |
注:クッキーは、ブラウザを越えることはできません
パラメータの定義:
max_ageのとexprise時間:
max_ageの:秒で、クッキーの有効期限を指定する整数 |
セットには、10日後に期限切れ:
exprise = datetime.datetime.now()+はtimedelta(日= 10)、10日に期限切れ |
有効期限が切れることはありません。
Noneにexpriseセットが期限切れにならないことを示しています |
####
2.セッション
#####
2.1説明
クッキーに応じて、サーバーの技術セッション、 |
#####
2.2オープンセッションの設定
SESSIONを有効ジャンゴ1)
代わりに以下の設定を変更します。
INSTALLED_APPS: |
各オブジェクトは、セッションのHttpResponseプロパティを持っている辞書ライクオブジェクトであります
#####
2.3一般的な操作
ますrequest.session [「ユーザー」] =ユーザ名のデータを設定します |
3.ログイン認証セッション+クッキーを達成
ログイン認証方式のビューを作成します。1.
デフ (リクエスト):もし request.method == 'GET' :リターン(要求、レンダリング 'login.htmlと'の)場合 request.method == 'POST' : ユーザ名= request.POST.get( 'ユーザ名') パスワード= request.POST.get( 'パスワード')#2。校验数据完整性 フラグ=全て([ユーザー名、パスワード]) |
適切なデコレータを作成します。2.
DEF login_required (FUNC) :DEFのcheck_login (要求):試してみる:セッションID#検証クッキーの値が存在し、対応するレコード情報#django_session認証サーバのテーブルがある場合、現在値が設定値を取得している場合#のUSER_ID ますrequest.sessionを[作ります 'USER_ID' ]を除く例外 AS E:リターン HttpResponseRedirect(リバース( 'ユーザ:ログイン'))戻り FUNC(リクエスト) |
3.キャンセルを達成するために
|