セッション与クッキー:
クッキーは、ブラウザ技術、および技術であり、サーバは、サーバが直接のみどのように応答を返すことで、ブラウザに伝えるために、クッキー、クッキー応答操作を操作することができないではありません。セッションは、より多くのソリューションのように店の承認情報へのサーバのためのソリューション、異なる言語で、セッションを実施するためのさまざまな枠組みが異なっていたこと、およびセッションの動作を理解することはないかもしれません同じ。同時に、それは、ユーザー名やパスワードなどの情報は、セッションに格納され、セッションのコンテンツは、ユーザが直接見ることができない、セッションクッキーのセキュリティリスクを解決する方法です。
セッションストレージ:
サーバー生成したセッション情報が暗号化されて、フラスコが第二の使用のいずれかで、サーバー(のみクッキーがsession_id)に保存することができ、また(ブラウザのクッキーが暗号化されたセッションの内容を知ることができない)クッキーに保存することができますメカニズム。
オペレーティングセッション:
のような、セッションを操作するために操作されるように辞書に相当し、フラスコインポートsession`オブジェクトから `セッション・オブジェクトを使用して、辞書が動作することができ:セッション[「ユーザ名」] =「暁」、session.get(「ユーザ名」) 、session.pop( 'ユーザ名')、session.clear()などが挙げられます。コード操作上の使用に直接このセッションオブジェクトをインポートした後、それは自動的にクッキーに戻って追加され、ブラウザが自動的にクッキーでアクセス要求から抽出されますので、我々は手動でレスポンスにそれを追加する必要はありませんクッキーは、クッキー要求に手から抜け出す必要がありません。
セッションの暗号化:
セッションを使用する場合は、SECRET_KEYが設定されている必要があり、この値は、セッションの内容を暗号化するために使用し、ブラウザに返されます。例えば: `App.configファイル[ 'SECRET_KEY'] = os.urandom(24) '、すなわち24ビットの乱数。
セッションが有効です。
デフォルトのセッションクッキーはブラウザの終了まで有効と同じ答えです。日時から設定item`のこのタイプは、デフォルトでは31日の期間で、コンフィギュレーション・PERMANENT_SESSION_LIFETIME場合、項目の値が、この配置の対象となり、 `session.permanent = true`をカスタム設定期間に設定することができますtimedelta`タイプをインポートします。例えば:7日間有効 `App.configファイル[ 'PERMANENT_SESSION_LIFETIME'] =はtimedelta(日= 7) '、すなわち。
簡単な例:
インポートOS から日時インポートはtimedelta からフラスコインポートフラスコに、セッション アプリケーションはフラスコ(= __name__ ) #セッションを使用して、セッション暗号化、SECRET_KEYを構成する必要があり App.configファイルの[ 「SECRET_KEYのを」 ] = os.urandom(24 ) #は、このように構成されていません項目は、デフォルトでは、コンフィギュレーション提供session.permanent =後31日Trueのとき、この構成では、項目の値をとります。 app.configを[ ' PERMANENT_SESSION_LIFETIME ' ] =はtimedelta(。= 7日) @ app.route(' / ' ) DEF hello_world(): #このセッションオブジェクトが実際に辞書に相当し、辞書のように使用することができ、 #ここで設定したセッションの後、このセッションはバックブラウザにクッキーに自動的に暗号化されたコンテンツになります 。#ブラウザセッションにクッキーの形で保存されています:セッションのコンテンツの暗号化の文字列として「キーと値のペア」のクッキー、「セッション」にキー、値を追加します。 セッション[ 「ユーザ名」 ] = 「暁明」 #設定したセッションの永続性、デフォルトでは真の表現に設定されたブラウザの答えは、年末には31日間有効になるまで有効である、Falseです session.permanent = 真 のリターン 「のHello World!」 @app .route(' /ユーザ名/ ' ) DEF GET_USERNAME(): #取得セッション情報の ユーザ名= Session.get(' ユーザ名' ) 返すユーザー名または 「どのユーザーが記録されませんを!' (App.route @ ' / DELETE_USER / ' ) DEFのdel_user(): #は、セッションメッセージの削除 、ユーザ名= session.pop(' ユーザ名' ) のリターン ' {}正常に削除されます!「 .Format(ユーザー名)IF名、他は 」失敗した削除します!' IF __name__ == ' __main__ " : app.run(デバッグ =真)