2017-01-31 1 views
0

ログイン/認証を要求せずに、ユーザーの活動をディスク上に維持するWebサイトを考えてみましょう。Flaskユーザーセッションを介してカジュアルなユーザーの復帰を認識

これにより、サーバーが再起動された場合でも、ユーザーはすべてのアクティビティを元に戻してすべてのアクティビティを見つけることができます。ユーザーセッション

from Flask import session 
session['foo'] = 'bar' 

は普通の辞書である

ので、私は、サーバーが停止してリニューアルされたときにそれは拭いますと仮定しています。ユーザの2回の訪問がサーバの再起動を横断する場合、それは永続的ではない。フラスコを使用して、我々はデータベースセッションに

from flask.ext.sqlalchemy import SQLAlchemy 
db = SQLAlchemy() 
db.session.add(..) 
db.session.commit() 

を使用したいと、ユーザーがログインしていないので、我々は彼らのユーザーセッションを通じて個別のユーザを区別したい。そうするには

データベースセッションで保持するためにユーザーセッションから抽出できる一意のIDとは何ですか?アイデアは、ユーザーが戻ったときに、ブラウザのクッキーがそれらを一意に識別し、ユーザーセッションからハッシュした識別子がそのまま残ることを意味するということです。私はあなたがフラスコを使用していると仮定した用語から

答えて

1

-

ので、db.sessionは単一viewer- ratehrに関連する日付で、「ブラウジング」のセッションを参照していない、それはDB接続セッションを指し、そのWebビューのサイクルではユニークです(ブラウジングセッションではありません)。これは別のものです。

このように、のコードはのオブジェクトを永続的なユニークな方法でDBに保持します。 Flaskアプリケーションを再起動するときに表示されない場合は、一時データベースを使用している必要があります。メモリ内のsqliteインスタンスまたは毎回再作成されるドッカーコンテナ内のデータベースではなく、永続的なディスクデータベースを使用するように構成を調整するだけです。

あなたが考えている "セッション"は、 "ブラウジング"セッションがFlaskのボックスの外には存在しないため、あなた自身がロールしているか、またはhttps://pythonhosted.org/Flask-Session/のようなプラグインの1つを使用します。 PHPの「セッション」に関連しています。

関連する問題