flask 中会话过期时间和刷新时间的设置

2024-07-02 17:45:48 浏览数 (3)

flask 中会话过期时间和刷新时间的设置

在 flask 应用程序中,会话(session)是一种用于存储和跟踪用户数据的机制。

接下来将介绍如何在 flask 中设置会话的过期时间和刷新时间.

设置会话的过期时间

要设置会话的过期时间,您可以使用 flask 的 app.permanent_session_lifetime 属性,该属性表示会话的持续时间,以秒为单位。

代码示例:

代码语言:javascript复制
from flask import flask

app = flask(__name__)
app.secret_key = 'your_secret_key'
app.permanent_session_lifetime = 3600  # 设置为 1 小时

# 其他路由和视图函数...

if __name__ == '__main__':
    app.run()

在上述示例中,我们将 app.permanent_session_lifetime 设置为 3600 秒(1 小时)。这意味着会话数据将在 1 小时后过期。

设置会话的刷新时间

会话的刷新时间是指每次用户访问应用程序时,会话的过期时间会重置,从而延长会话的有效期。

代码示例:

代码语言:javascript复制
from flask import flask, session, request

app = flask(__name__)
app.secret_key = 'your_secret_key'

@app.before_request
def before_request():
    session.modified = True

# 其他路由和视图函数...

if __name__ == '__main__':
    app.run()

在上面的示例中,我们使用 @app.before_request 装饰器注册一个函数 before_request()。在每次请求之前,before_request() 函数会被调用,将 session.modified 设置为 True,以确保会话的刷新。这样,每次用户发起请求时,会话的过期时间都会被重置。

综合示例

下面是一个综合示例,展示了如何在 flask 中设置会话的过期时间和刷新时间,并实现用户登录和注销功能。

代码语言:javascript复制
from flask import flask, render_template, request, redirect, url_for, session

app = flask(__name__)
app.secret_key = 'your_secret_key'

# 模拟用户数据库
users = {
    'user1': 'password1',
    'user2': 'password2',
    'user3': 'password3'
}

@app.route('/')
def index():
    if 'username' in session:
        return f'Hello, {session["username"]}! <a href="/logout">Logout</a>'
    else:
        return 'Hello, guest! <a href="/login">Login</a>'

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if username in users and users[username] == password:
            session['username'] = username
            session.permanent = True  # 设置会话为永久会话
            return redirect(url_for('index'))
        else:
            return 'Invalid username or password'
    return render_template('login.html')

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run()

上面的示例中,我们设置了会话的过期时间为默认值(31 天)并将会话标记为永久会话。在用户登录时,会话的过期时间会重置,从而实现会话的刷新。用户可以通过访问 /login 路由来进行登录,访问 /logout 路由来进行注销。

最后

简单不

这样我们就实现会话的过期时间和刷新时间的设置,以及基本的简单的用户登录和注销功能!

关注「测试开发囤货」公众号回复「AI」,送你一套 Python机器学习 电子书。

0 人点赞