admin管理员组文章数量:1642331
在使用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'/*')
源码摘录如下,能力不足,未仔细研究,不做详细解释,惭愧:
class ConfigAttribute(object):
"""Makes an attribute forward to the config"""
def __init__(self, name, get_converter=None):
self.__name__ = name
self.get_converter = get_converter
def __get__(self, obj, type=None):
if obj is None:
return self
rv = obj.config[self.__name__]
if self.get_converter is not None:
rv = self.get_converter(rv)
return rv
def __set__(self, obj, value):
obj.config[self.__name__] = value
#
permanent_session_lifetime = ConfigAttribute(
"PERMANENT_SESSION_LIFETIME", get_converter=_make_timedelta
)
#
def _make_timedelta(value):
if not isinstance(value, timedelta):
return timedelta(seconds=value)
return value
版权声明:本文标题:flask-login 设置session过期时间(2021年5月20日-亲测) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729335204a1196890.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论