フラスコクッキーとセッションプレゼンテーション
入門
Webサイトでは、HTTPリクエストはステートレスです。換言すれば、第1の時間とサーバー接続とログインが成功した後も、サーバーへの2番目の要求は、まだどのユーザー現在の要求を知りません。クッキーは、ログインサーバーがブラウザに一部のデータ(クッキー)を返した後に初めて、この問題を解決するために表示され、ユーザが第2のリクエストを送信するときに、ローカルのブラウザに保存されている、それは自動的に最後に入れますリクエストクッキー記憶されたデータは自動的にサーバに搬送され、ブラウザによって運ばれるデータは、現在のユーザがどのであるかを決定することができるであろう。クッキー保存されたデータの限られた量は、異なるブラウザは異なるストレージサイズを持っていますが、一般的には4キロバイト以上。だから、唯一のデータのいくつかの小さな量を格納することができますクッキーを使用しています。
そして、セッションクッキーの役割が少し似て、それについてのユーザー情報を格納することです。差は、クッキーは、ローカルのブラウザに保存され、サーバーのセッションに保存されています。サーバー上に格納されたデータは簡単に盗まれない、より安全になります。しかし、サーバーにも、いくつかの欠点を持っているサーバーのリソースを消費することであるが、今のサーバは、これまでに開発された上に格納され、情報セッションの一部は十分すぎるほどです。
と一緒にクッキーとセッション
WEB開発はこれまでに、クッキーやセッション使用は、ストレージの2種類が一般的に存在し、今日の市場や企業内で、いくつかは非常にプログラムを成熟さがありました。
- サーバに保存されている:ユーザーがログインした場合、クッキーがsession_idを格納することで、その後、具体的なデータは、サーバがクッキーにSESSION_IDが保存されます、セッションに格納され、次回は再び要求し、SESSION_IDを運ぶでしょうサーバーは、SESSION_IDに基づいてセッションライブラリデータにユーザーのセッションを取得します。ユーザーは、最終的に誰であるか知ることができるだけでなく、以前に保存された状態情報の一部になります。この専門用語は、サーバー側のセッションと呼ばれています。
- クライアントに保存されている:セッションデータは暗号化され、その後、クッキーに保存されています。この専門用語は、クライアント側セッションと呼ばれています。フラスコは、本実施形態で使用されているが、他の形で置き換えられてもよいです。
セッションのフラスコ
暗号化された機密データの後に:セッション機構フラスコでありsession
、そして次いでsession
に格納されたcookie
後続の要求の開始、次いで上のブラウザから送信されたcookie
リードsession
、その後session
リード機密データ最終的なユーザーを取得するためにデータを復号します。
このセッションのフラスコメカニズムのすべての情報は、クライアント(ブラウザ)に格納されているので、あなたは、サーバーのコストを節約することができます
例
コンフィギュレーション
コンフィギュレーション・ファイルconfig.pyでsecret_keyに参加します:
= SECRET_KEYの「XXXXXXXXX 」 #の塩値としてランダムな文字列暗号化されたセッションの文字列
メインアプリの設定ファイルの参照:
フラスコインポートフラスコ、セッション インポート設定 アプリ =フラスコ(__name__ ) app.config.from_object(設定) #[「SECRET_KEYの」] App.configファイル「XXXXX」#構成を導入することなく、メインアプリケーションファイルに直接提供することができます=
オペレーティングセッション
操作辞書同じセッションの動作方法
フラスコインポートフラスコ、セッション インポートOS アプリ =フラスコ(__name__ ) [App.configファイル「SECRET_KEYの」 = os.urandom](24) #は、24ビットのランダムな文字列が暗号化されて塩を設定します。 #設定セッション app.route @(' / ' ) DEF SET(): セッション[ ' ユーザ名' ] = ' Jyang ' #の辞書に同じ設定キー リターン ' 成功' #は、セッション読む (app.route @を「/ GET ") DEF GET(): セッション[ 「ユーザ名」 ] #の方法、内容が存在しない場合は、異常報告されます Session.get(「ユーザ名を」) #コンテンツが存在しない場合には、第二の方法を、返品なし。推奨される リターン Session.get(「ユーザ名」) #セッションを削除 app.route @(「/削除/は」) DEF の削除(): session.pop(「ユーザ名」) #辞書ポップメソッドは、指定された値にセッション削除 Session.clearの #を削除セッションのすべての値 リターン ' 成功' の場合 __name__ == ' __main__ ' : app.run()
設定されたセッションの有効期限
- あなたは、セッションの有効期限を指定しない場合は、ブラウザを閉じた後、デフォルトでは自動的に終了されます
- 永久的な性質のセッションがTrueに設定し、その後、有効期限は31日です(session.permanent =真)
- あなたはapp.configを設定PERMANENT_SESSION_LIFETIMEに有効期限を変更することができ、この値のデータ型はdatetime.timedelaタイプがあります。
"" " config.py " "" から日時のインポートはtimedelta インポートOS のSECRET_KEY = os.urandom(24) #は24文字のランダムな文字列を生成 PERMANENT_SESSION_LIFETIME =はtimedelta(日= 7) #のセット日効果的なsession7を