下面是“flask使用session保存登录状态及拦截未登录请求代码”的完整攻略,包含两条示例说明。
什么是Session
Session
是指用户与Web应用间的一次会话,可以用来存储在整个会话过程中需要跨越请求和响应之间一直使用的数据。
在 Flask 中,可以使用 session
对象保存用户会话数据。session
对象是一个相当有用的、用于临时存储用户的信息(如用户 ID、用户名、订单号等)的字典,这些信息在用户浏览网站时需要在不同界面之间传递。
Session的使用
Flask 提供了一个插件 session
,可以轻松地使用会话。通过设置密钥,session
可以安全地将用户数据存储在客户端的 Cookie 中(不建议将 session
存储在服务端)。Flask 会在 Cookie 中加密存储 session
数据,确保用户数据在存储和传输过程中是安全的。
安装 Flask-Session 扩展
在使用 flask-session 扩展之前,我们需要先安装它。可以使用 pip 进行安装:
pip install flask-session
配置 Session
要使用 session,需要设置 SECRET_KEY。可以在 Flask app 中设置。以下是示例代码:
from flask import Flask
from flask_session import Session
app = Flask(__name__)
# 配置 session 的参数
app.config['SECRET_KEY'] = 'supersecretkey'
app.config['SESSION_TYPE'] = 'filesystem'
#初始化扩展
Session(app)
在上面的代码中,SECRET_KEY
是必需的,它用于对所有会话数据进行加密和解密。SESSION_TYPE
可以设置为 filesystem
或其他选项,指定 session 存储方式。
保存用户会话数据到 session
from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'supersecretkey'
@app.route('/')
def index():
session['username'] = 'tom'
return 'User name has been saved in session.'
在上面的代码中,我们使用 session
对象将用户的用户名存储在 username
变量中。存储用户信息时,我们使用字典的方式将用户名存储在会话中。
当用户浏览其他页面时,可以检查会话是否包含该信息:
@app.route('/page')
def page():
if 'username' in session:
return 'Hello, %s!' % session['username']
else:
return 'Please login first.'
在上面的代码中,我们检查 username
是否存在于 session 中。如果存在,将欢迎用户的消息返回给浏览器。否则将提示用户先登录。
拦截未登录请求
使用 Flask session 可以轻松地进行用户认证和会话管理。如果未经身份验证的用户请求需要权限的页面,可以使用 Flask 的装饰器来处理此类请求并通过重定向将用户发送到登录页面。
from flask import Flask, session, redirect, url_for
from functools import wraps
app = Flask(__name__)
app.secret_key = 'supersecretkey'
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if 'username' not in session:
return redirect(url_for('login'))
return f(*args, **kwargs)
return decorated_function
@app.route('/dashboard')
@login_required
def dashboard():
return 'Welcome to dashboard!'
在此示例中,我们定义了login_required
装饰器,可以验证 username
是否存在于其 session 中,如果不存在,则重定向到 /login
页面。
要拦截未登录请求,可以在需要登录的路由上添加 @login_required
装饰器。如上面的示例代码中,添加了 login_required
装饰器的 dashboard
路由,只有在通过身份验证后才能访问。
以上是关于“Flask 使用 session 保存登录状态及拦截未登录请求代码”的完整攻略,通过配置 Session、保存用户会话数据到 session 和拦截未登录请求三个方面来讲解。其中包含了两条示例代码说明。希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask使用session保存登录状态及拦截未登录请求代码 - Python技术站