flask-login 自定义设置session过期时间(2021年亲测有效)

1,419 阅读1分钟

在使用Flask框架进行web开发时,登录模块采用了flask-login插件,遇到了设置session过期时间的问题,网上查到如下办法,经过测试后并未生效(原因不详):

from flask import session
from datetime import timedelta
 
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
 
    username = request.form['username']
    password = request.form['password']
    user = User.get_user(username, password)
    if not user:
        flash('Username or Password is invalid.', 'error')
        return redirect(url_for('.login'))
    login_user(user)
    
    # 设置session过期时间
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=10)
    
    return render_template('index.html')

于是看了Flask的源码,进行了如下配置,得以解决,代码配置如下:

import flask_login
import json
import datetime
from flask import Flask
from flask import request
from flask_cors import CORS
# from flask_log_request_id import RequestID, current_request_id
 
app = Flask(__name__)
 
# 设置session过期时间
app.config['PERMANENT_SESSION_LIFETIME'] = datetime.timedelta(minutes=1)
 
# 解决跨域问题
CORS(app, resources=r'/*')