したがって、Flaskセッションについての私の理解は、それを辞書のように使用して、次のようにしてセッションに値を追加できるということです。
session['キー名'] = 'ここに何らかの値'
そして、それはうまくいきます。
AJAX ポストを使用してクライアントを呼び出すルートで、セッションに値を割り当てます。そして、それはうまくいきます。サイトのさまざまなページをクリックすることができ、値はセッションにとどまります。ただし、ブラウザー ウィンドウを閉じてからサイトに戻ると、そこにあったセッション値は失われています。
それは奇妙で、問題はセッションが永続的ではないことだと思うでしょう。また、Flask-Openid も実装しました。これはセッションを使用して情報を保存し、ブラウザー ウィンドウを閉じて再度開いても保持されます。また、ブラウザ ウィンドウを閉じた後、自分のサイトに戻る前に Cookie を確認しましたが、実際には Cookie がまだ残っています。
もう 1 つの奇妙な動作 (関連している可能性があります) は、AJAX ポスト ルートにアクセスして正しい値を割り当てると、テスト目的でセッションに書き込んだ値の一部が消えてしまうことです。これは奇妙ですが、本当に奇妙なのは、ブラウザ ウィンドウを閉じて再度開くと、保持しようとしていた値が失われ、以前に失った値が実際に戻ってくることです。これらの値を再割り当てするためのコードが Python ファイルにないため、それらは再割り当てされていません。
ヘルパーへの出力をいくつか示します。これらはすべて、前述の AJAX ポスト ルートではなく、実際のページのルートから出力されます。
これは、セッションに保存する値を割り当てた後の出力です。値のキーは「userid」です。その他の値はすべて、この問題を解決するために追加したダミーの値です。'userid': 8 は、ブラウザー ウィンドウを閉じない限り、セッションにとどまります。他のルートにアクセスでき、値は本来あるべきようにそこにとどまります。
['session.=', <SecureCookieSession {'userid': 8, 'test_variable_num': 102, 'adding using before request': 'hi', '_permanent': True, 'test_variable_text': 'hi!'}>]
ブラウザ ウィンドウを閉じてサイトに戻ると、AJAX ポスト リクエストをやり直さずに次の出力が得られます。
['session.=', <SecureCookieSession {'adding using before request': 'hi', '_permanent': True, 'yo': 'yo'}>]
「よ」の値は、最初の最初の出力にはありませんでした。どこから来たのかわからない。コードで「yo」を検索しましたが、その値をどこにも割り当てた例はありません。数日前にセッションに追加したと思います。したがって、永続化されているように見えますが、他の値が書き込まれると隠されます。
最後に、AJAX ポスト ルートに再度アクセスし、デバッグを使用してキーを出力するページに移動します。上記で貼り付けた最初の出力と同じ出力であり、期待どおりであり、「yo」の値が再び消えています (ただし、ブラウザー ウィンドウを閉じると元に戻ります)
['session.=', <SecureCookieSession {'userid': 8, 'test_variable_num': 102, 'adding using before request': 'hi', '_permanent': True, 'test_variable_text': 'hi!'}>]
Chrome と Firefox の両方でこれをテストしました。
だから私はこれがすべて奇妙だと思っており、セッションがどのように機能するかについての誤解から生じていると推測しています. それらは辞書だと思います。セッションを永続的に設定し、Cookie が削除されない限り、辞書の値を書き込み、数日後に取得できます。
この奇妙な動作が起こっている理由はありますか?