web-dev-qa-db-fra.com

Existe-t-il un moyen simple de faire expirer les sessions dans une fiole?

Je construis un site Web avec flask où les utilisateurs ont des comptes et peuvent se connecter. J'utilise flask-principal pour la partie connexion et la gestion des rôles. Est-il possible de créer la session de l'utilisateur expire après, disons, 5 ou 10 minutes? Je n'ai pas pu trouver cela dans flask documentation ou documentation de flask-principal.

J'ai pensé à un moyen de le faire à la main, de définir une variable côté serveur avec une étiquette de temps au moment de la connexion et à la prochaine action de l'utilisateur, le serveur vérifie le décalage horaire sur cet horodatage et supprime la session.

69
verrochio

les sessions de flacon expirent lorsque vous fermez le navigateur, sauf si vous avez une session permanente. Vous pouvez éventuellement essayer ce qui suit:

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)

Par défaut, dans Flask, permanent_session_lifetime est défini sur 31 jours.

100
codegeek

Oui, nous devrions définir

session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=5)

Mais je ne pense pas que cela devrait être fixé à app.before_request, Cela conduira à les définir aussi longtemps que possible.

Le permanent_session_lifetime Est un configuration de base , il doit donc être défini lors de la configuration de l'application:

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

Le session sera créé pour chaque client, séparé des autres clients. Donc, je pense que le meilleur endroit pour définir session.permanent Est lorsque vous login():

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