web-dev-qa-db-fra.com

Session permanente du flacon: où les définir?

Par défaut, Flask utilise des sessions volatiles, ce qui signifie que le cookie de session est configuré pour expirer à la fermeture du navigateur. Pour utiliser des sessions permanentes, qui utiliseront un cookie avec une date d'expiration définie, vous devez définir session.permanent = True, comme indiqué par mentionné dans cette question. , et la date d'expiration sera définie en fonction de config['PERMANENT_SESSION_LIFETIME'].

Je suis surpris que la durée de vie d'une session soit définie dans le fichier de configuration, mais il n'est pas possible de demander l'utilisation de sessions permanentes via la configuration, telle qu'un config['USE_PERMANENT_SESSION'] = True. Mais ainsi soit-il.

Ma question est la suivante: si vous faites souhaitez des sessions permanentes, quel est le meilleur endroit pour les définir? Est-ce dans une fonction @app.before_request telle que proposée dans la question mentionnée? Mais cela signifierait le redéfinir à chaque demande? Il semble qu’une fois défini, session.permanent reste vrai jusqu’à la fin de la session.

Les sessions permanentes sont généralement utilisées après la connexion , le meilleur endroit pour les demander est donc pendant le traitement de login_user()? La meilleure politique consiste-t-elle donc à utiliser des cookies de session volatiles pour toutes les pages anonymes et à basculer vers des sessions permanentes en effectuant un session.permanent = True à la connexion?

Et vous voudrez peut-être définir une durée de vie différente selon qu'il s'agisse du cookie session ordinaire ou du cookie remember_me. Quel serait le meilleur moyen d'y parvenir?

16
patb

Je suis surpris no on a répondu à cette question. Il semble qu'il devrait y avoir un type de variable de configuration SESSION_PERMANENT = True. Mais malheureusement il n'y en a pas. Comme vous l'avez dit, c'est la meilleure façon de le faire. 

@app.before_request
def make_session_permanent():
    session.permanent = True
15
mikey8989

Je choisis ce que vous avez dit "login_user ()"

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

si elle est définie sur app.before_request , cela conduira à les définir aussi longtemps que possible.

0
tinyhare