[学習記録]フラスコセッション維持

 

 

 

 

 

 

事前知識:

1.httpは、ステートレス通信プロトコルである、通信状態は、それ自体に保存されていません

(リクエスト)サーバがルールに従って、本質的に、ユーザの2.webを受信し、ユーザに応答を与える(応答)を要求する責任

3.セッション(セッション)は、すべての通信が同じユーザセッション時間で行われ、独自のWebサーバーで、ユーザーの道を管理するために使用されるWebサーバです

4.cookieは、セッションを実装する方法です

 

次に入力され、リファレンスドキュメント:フラスコ公式文書

公式が提供する利便性を直接デモコードでは、唯一のログイン機能は、セッションを追加した後、印刷セッションの内容を変更されました

1 app.route(@ ' /ログイン'、メソッド= [ ' GET '' POST ' ])
 2  デフログイン():
 3      であれば request.method == ' POST ' 4          セッション[ ' ユーザ名' ] =要求。フォーム[ ' ユーザ名' ]
 5          プリント(セッション)
 6          リターンリダイレクト(なurl_for(' インデックス' ))
 7      戻り ''」
8         <フォームアクション= "" METHOD = "POST">
 9              <P>の<input type =テキスト名=ユーザー名>
 10              <P>の<input type = =値を提出するログイン>
 11          </フォーム>
 12      '」'

 

以下は、結果の実際の実行時間分析であります

 

サイトへ1.直接アクセス、ディスプレイがログインしていません

 

 2.アクセス/ログイン、ログインが完了すると

ページショー

サーバーの表示

 

 httpプロトコルパッケージを守って

Requestパケットは、以下の

アップPOSTメソッドでフォームを送信

次のように応答があります

サーバーはクッキーを設定し、リダイレクトパス「/」に戻って302リダイレクト応答を与えます

このとき、ブラウザは、新たな直接ルート、次の要求パケットを要求します

彼は、クッキーの上に置かれています

以下のサーバーの応答

正常な応答200

 

3.アクセスログアウト

アクセスログアウト、ブラウザに表示さ

閲覧要求パケット

通常、クッキーの要求を運びます

表示応答パケット

また、302リダイレクトを与えられた、だけでなく、クッキーが設定されますが、この時に直接nullに設定されたCookieにされていました

以下リダイレクトコミュニケーション

このとき、ブラウザはすでに要求ではないクッキーを送信します

 

4.別のブラウザアクセスを使用します

そして、すなわち、ブラウザのChromeブラウザとアクセスを使用

以下の結果をご覧ください。クロム

サーバーは以下の通りです

 

 そして、アクセスにすなわちブラウザを使用

サーバーの表示

対照的にクッキーのシェアはとして表示されていない2つのブラウザは、その後、まだクロムの表示ユーザのログインを使用しているページのクロムを更新します

インデックス機能を変更する、セッションの値を印刷することが可能です

1 @app.route('/')
2 def index():
3     if 'username' in session:
4         print(session)
5         return 'Logged in as %s' % escape(session['username'])
6     return 'You are not logged in'

刷新chrome与ie

由此可见session与cookie有关,根据不同的cookie服务器对session的判断也不同

 这里提供一份flask的源码解析博客

其中指出flask的会话管理完全依赖cookie执行,服务器本身不保存相关数据,放到cookie中交给客户端保存

当客户端提交cookie时,服务器从cookie中解析出session,完成会话。

这就是flask默认提供的session功能,如果需要更加安全地将session保存到服务器,则需要使用flask-session库

おすすめ

転載: www.cnblogs.com/trickofjoker/p/11057875.html