web-dev-qa-db-ja.com

フラスコでセッションをタイムアウトにする簡単な方法はありますか?

flaskを使用してWebサイトを構築しています。ユーザーはアカウントを持ち、ログインできます。ログインの一部と役割の管理には、flask-principalを使用しています。 5分または10分後にユーザーのセッションが期限切れになりますか?flask documentationまたは、flask-principalのドキュメントで見つけることができませんでした。

私は手作業でそれを行う方法を考え、ログイン時にタイムタグを使用してサーバー側の変数を設定し、ユーザーが次に実行するアクションで、サーバーはそのタイムスタンプのタイムデルタを確認し、セッションを削除します。

69
verrochio

永続的なセッションがない限り、ブラウザを閉じると、フラスコセッションは期限切れになります。以下を試すことができます。

from datetime import timedelta
from flask import session, app

@app.before_request
def make_session_permanent():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=5)

Flaskのデフォルトでは、permanent_session_lifetimeは31日に設定されています。

100
codegeek

はい、設定する必要があります

_session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=5)
_

しかし、_app.before_request_に設定する必要があるとは思わない。

_permanent_session_lifetime_は 基本設定 であるため、アプリを設定するときに設定する必要があります。

_ from datetime import timedelta
 app = Flask(__name__)
 app.config['SECRET_KEY'] = 'xxxxxxxxx'
 app.config['PERMANENT_SESSION_LIFETIME'] =  timedelta(minutes=5)
_

sessionは、クライアントごとに作成され、他のクライアントから分離されます。したがって、_session.permanent_を設定する最適な場所は、login()の場合です。

_@app.route('/login', methods=['GET', 'POST'])
def login():
    #After Verify the validity of username and password
    session.permanent = True
_
15
tinyhare