サーバーのセッションに保存されたCookieと異なるデータ。セッションは、クライアントがサーバーにログオンし、時間間隔をログオフしています。一時ディレクトリのデータストレージのニーズは、サーバー上でこのセッションで行います。
各クライアントに割り当てられたセッションIDを持つセッション。セッションデータをサーバ署名は暗号化に、クッキーの上に格納されます。この暗号化のために、フラスコのアプリケーションがSECRET_KEYを定義する必要があります。
また、セッションオブジェクトをセッション変数とキーの辞書オブジェクトの関連する値が含まれています。
例えば、「ユーザ名」セッション変数を設定するステートメントを使用するには -
セッション[「ユーザ名」] =「管理者」
セッション変数を削除するには、ポップ()メソッドを使用します。
session.pop( 'ユーザ名'、なし)
次のコードは、セッションの仕事にどのようにフラスコの簡単なデモです。URL =>「/」は、セッション変数名が設定されていないとしてログインするプロンプトが表示されます。
@ app.route( '/')
デフインデックス():
セッションの「ユーザー名」の場合:
ユーザ名=セッション[「ユーザ名」]
リターン「としてログインし」+名+「
」+ \
リターン「あなたはログインしていません
+ \」
ユーザーは、それがGETメソッドを呼び出すことによって得られるため、ビューを表示するには、ログイン()関数URL =>「/ログイン」にアクセスする場合は、それは、ログインフォームが開きます。
=> /ログインURLを再送信するためのフォームに記入し、セッション変数が設定されました。アプリケーションは、URL => /にリダイレクトされます。ユーザ名:その後、セッション変数を見つけます。
@ app.route( '/ログイン'、メソッド= [ 'GET'、 'POST'])
デフログイン():
request.method == 'POST' の場合:
セッション[ 'ユーザ名'] =のRequest.Form [ 'ユーザ名']
リターンリダイレクト(なurl_for( 'インデックス'))
リターン「」」
「「」
また、アプリケーションは、それが値「ユーザ名」セッション変数を削除し、ログアウト()ビュー機能を含みます。「/」表示開始ページを再度URLにジャンプします。
@ app.route( '/ログアウト')
デフログアウト():
それがある場合#セッションからユーザ名を削除します
session.pop( 'ユーザ名'、なし)
リターンリダイレクト(なurl_for( 'インデックス'))
アプリケーションを実行し、ホーム・ページにアクセスする(アプリケーションSECRET_KEYを設定してください)。
フラスコのインポートフラスコから、セッション、リダイレクト、なurl_for、脱出、要求
アプリ=フラスコ(__ name__)
app.secret_key =「任意のランダムな文字列」
次のように完全なコードがあります -
フラスコのインポートフラスコから
フラスコのインポートrender_templateから
フラスコのインポート要求から
フラスコのインポートmake_responseから
フラスコのインポートフラスコから、セッション、リダイレクト、なurl_for、脱出、要求
アプリ=フラスコ(__ name__)
app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
@ app.route( '/')
デフインデックス():
セッションの「ユーザー名」の場合:
ユーザ名=セッション[「ユーザ名」]
戻り値は、「ログインユーザー名は次のとおりです。」+名+「
」+ \
リターン「まだログインしている、
」+ \
@ app.route( '/ログイン'、メソッド= [ 'GET'、 'POST'])
デフログイン():
request.method == 'POST' の場合:
セッション[ 'ユーザ名'] =のRequest.Form [ 'ユーザ名']
リターンリダイレクト(なurl_for( 'インデックス'))
リターン「」」
「「」
@ app.route( '/ログアウト')
デフログアウト():
それがある場合#セッションからユーザ名を削除します
session.pop( 'ユーザ名'、なし)
リターンリダイレクト(なurl_for( 'インデックス'))
__name__ == '__main__' の場合:
app.run(デバッグ=真)
出力は、以下に示されています。リンクをクリックして「サインインするにはここをクリックしてください。」
このリンクは別のインターフェイスに送信されます。「管理者」を入力します。
画面には「:管理者のログインユーザー名がある」というメッセージが表示されます。次のように -
(編集:Leilin鵬出典:削除されたネットワーク侵入)